我创建了一个PartialView,我用Html.RenderPartial渲染,传递视图名称和强类型数据项绑定到(下面):
<% Html.RenderPartial("SearchViewUserControl", ViewData["SearchData"]); %>
部分视图的表单包含提交按钮:
<% using (Html.BeginForm("Search", "Home"))
{ %>
...
<div>
<input type="submit" value="Search" />
</div>
<% } %>
我在控制器的操作方法中设置了一个断点(如下所示),但在searchData中没有设置任何内容。我做错了什么?
public ActionResult Search(SearchDomain searchData)
{
if (ModelState.IsValid)
{
}
return View();
}
答案 0 :(得分:0)
你需要发布实际的表单元素,以便任何人知道什么是错的。
表单html是将绑定设置为SearchDomain的原因。您希望将表单元素命名为:
<input name="searchData.SomeProperty">
让他们绑定到你的动作参数。
答案 1 :(得分:0)
要从控制器方法中将SearchDomain
对象从视图中拉出,您的视图必须继承自System.Web.Mvc.ViewPage<Models.SearchDomain>,
或包含SearchDomain
的{{3}}对象
另一种方法是让您的视图继承自System.Web.Mvc.ViewPage
,并使用UpdateModel将视图数据强制转换为SearchDomain
对象。像这样:
public ActionResult Save()
{
SearchDomain domain = new SearchDomain ();
UpdateModel(domain , new[] { "Name", "Email", "Phone", ... });
return View(domain);
}
答案 2 :(得分:0)
说实话,我认为RenderAction更容易使用。