我有使用 ASP.NET 表单的经验,但对 MVC 很陌生。
如何从回发的共享视图中获取数据?
在 ASP.NET Forms 中,我可以编写如下内容:
ASP.NET 表单:
型号代码:
public class MyModelItem
{
// Just TextBox is enough for editing this
public string SimpleProperty { get; set; }
// For this property separate NestedItemEditor.ascx is required
public MyModelNestedItem ComplexProperty { get; set; }
}
public class MyModelNestedItem
{
public string FirstProperty { get; set; }
public string SecondProperty { get; set; }
}
行为:
用于编辑 MyModelNestedItem 的控件是单独的 ASCX 控件 NestedItemEditor.ascx
这只是举例,MyModelNestedItem 可能要复杂得多,我只是想说明一下我的意思。
现在,当我显示此项目进行编辑时,我显示了一个 asp:TextBox 和一个 NestedItemEditor.ascx。在页面回发上,我正在从两者收集数据,仅此而已。
MVC 的问题:
当我尝试使用 MVC 实现此场景时,我正在使用自定义的 EditorFor(通过使用 UIHint 并创建共享视图)。所以这个共享视图Views\Shared\EditorTemplates\MyModelNestedItem.cshtml现在可以显示已经在 MyModelNestedItem 属性中的数据,但我不知道如何让它返回新输入的数据。
当父控制器收到一个 post 请求时,数据似乎在 Request.Form 中,但是文明的到达方式是什么?当然,最好的解决方案是数据是否会自动提取到MyModelItem.ComplexProperty中。