2011-01-31 4 views
2

私はActionMethodと私は強く型付けされたHTMLヘルパーによって提供された値から文字列をバインドしようとしているがあります。簡単なパラメータの型に強く型付けされたHTMLヘルパー値を取得

public class SampleController : Controller 
{   
    public ActionResult Save(string name) 
    { 
     return Content(name); 
    } 
} 

私の見解では、複雑なが含まれていますオブジェクト...と私は、次のような強く型付けされたヘルパーを使用しようとしている:

@model MvcApplication2.Models.Sample 

@using(Html.BeginForm("save", "sample")) { 
    @Html.TextBoxFor(x =>x.Product.Name) 
    <input type="submit" /> 
} 

私はテキストボックスの名前でProduct.Name

<input id="Product_Name" name="Product.Name" type="text" value=""> 
をレンダリングすることを知っています

public ActionResult Save(Product product) 
{ 
    return Content(product.Name); 
} 

か、別の名前でプロパティにバインドするbind属性を使用します:

public ActionResult Save([Bind(Prefix="Product")]Product p) 
{ 
    return Content(p.Name); 
} 

が、どのように行う

と私は名前productで複雑なProductタイプに特異的に結合することができる私はそれを単なる文字列値にバインドするのですか?

public ActionResult Save(string name) 
{ 
    return Content(name); 
} 

おかげで、 ブライアン

答えて

1

は、入力フィールドの完全なプレフィックス(name属性の値)を使用してください。あなたも、より多くのあなたが常にcustom model binderを使用することができますコントロール希望される場合

public ActionResult Save([Bind(Prefix="Product.Name")]string name) 
{ 
    return Content(name); 
} 

は:たとえば

public class CustomModelBinder : IModelBinder 
{ 
    // insert implementation 
} 

public ActionResult Save([ModelBinder(typeof(CustomProductModelBinder))]string name){ 
    // ... 
} 
+0

をおかげで、それは私がちょうど行方不明になったという単純なものであることを知っていました。 – bmancini

関連する問題