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

我有一个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);
}

谢谢,Brian


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

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){
    // ...
}
链接地址: http://www.djcxy.com/p/19081.html

上一篇: Getting the strongly typed HTML helper value into a simple parameter type

下一篇: Install node.js npm on Ubuntu 16.04 and Plesk Onyx