2009-11-11 94 views
2

我创建了一个PartialView我与Html.RenderPartial渲染,通过视图和强类型数据项的名称绑定到(下图):四处张贴值MVC PartialView

<% 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

你需要发布实际的表单元素让任何人知道最新的错误。

表单html是设置与SearchDomain绑定的内容。你想有一个名为像这样的表单元素:

<input name="searchData.SomeProperty"> 

对于他们绑定到你的动作参数。

0

为了拉SearchDomain对象出从一个控制器的方法的视图,视图必须或者从System.Web.Mvc.ViewPage<Models.SearchDomain>,或含有SearchDomain对象custom ViewModel class继承。

另一种方法是让您的视图继承自System.Web.Mvc.ViewPage,并使用UpdateModel将视图数据转换为SearchDomain对象。这样的事情:

public ActionResult Save() 
{ 
     SearchDomain domain = new SearchDomain(); 

     UpdateModel(domain , new[] { "Name", "Email", "Phone", ... }); 
     return View(domain); 
} 
+0

Robert, 它是有道理的,我将不得不从System.Web.Mvc.ViewPage 继承,但在这种情况下,我有搜索视图实现为UserControl,它派生自System。 Web.Mvc.ViewUserControl 。然而,操作方法在与页面相关的控制器中。 – bobuva 2009-11-12 01:14:28