将强类型HTML帮助器值转换为简单的参数类型

时间:2011-01-31 19:45:14

标签: asp.net-mvc asp.net-mvc-3

我有一个ActionMethod,我正在尝试从强类型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" />
}

我知道TextBox使用名称Product.Name

进行渲染
<input id="Product_Name" name="Product.Name" type="text" value="">

并且我可以绑定到名为Product的复杂product类型:

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

或使用Bind属性绑定到具有不同名称的属性:

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

但是如何让它绑定到一个字符串值?

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

谢谢, 布赖恩

1 个答案:

答案 0 :(得分:1)

使用输入字段的完整前缀(name属性的值)。例如:

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

如果您希望获得更多控制权,可以随时使用custom model binder

public class CustomModelBinder : IModelBinder
{
    // insert implementation
}

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