HtmlFieldPrefix未映射到模型

时间:2011-02-25 01:10:56

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

你好我最近开始在一个基于JQuery / JQueryUI的ASP .Net网站上工作。这个想法是只有一个页面,并通过对话框和ajax加载其余的内容,等等。

然而问题是当创造&同时模型的编辑表单在对话框中打开,同时一些JQueryUI小部件(如DatePicker停止作为表单工作)导致DOM在两个字段中都存在重复的id。

所以我尝试在控制器上使用此代码:

ViewData.TemplateInfo.HtmlFieldPrefix = "Create"; // or Edit etc

这有助于修复DatePicker问题,但这些字段在发回控制器时不再映射到模型。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:27)

您可以尝试在绑定时指定相同的前缀:

[HttpPost]
public ActionResult Create([Bind(Prefix = "Create")] CreateViewModel model)
{
    ...
}

答案 1 :(得分:1)

对于遇到相同问题的任何人,您也可以将模型重命名为“创建”,如下所示:

[HttpPost]
public ActionResult Create(CreateViewModel create)
{
    ...
}

我觉得哪个看起来更好,但有点危险。如果其他开发人员或您决定稍后更改参数名称,则表单将会中断,这是不理想的。

我认为这是因为我的一个表格正确绑定而另一个没有。一个人有前缀作为参数名称,一个只是“模型”。