Aln*_*dru 2 action partial-views asp.net-mvc-3
我是 MVC 3 的新手,我有一个关于正确方法的问题。
想象一下我有一个模型:
public class MyCustomModel
{
[Required]
public string UserName { get; set; }
[Required]
public DateTime? Birthdate { get; set; }
[Required]
public string City {get;set;} //To partial view
[Required]
public string Street {get;set;} //To partial view
}
Run Code Online (Sandbox Code Playgroud)
在这里我有一个观点
@Html.TextBoxFor(m => m.UserName) @Html.TextBoxFor(m => m.BirthDate) @Html.Action("LocationGroup", "Home") //这里应该渲染城市和街道
我的部分视图会有类似的东西:@Html.TextBoxFor(m => m.City) @Html.TextBoxFor(m => m.Street)
这是控制器中的操作:
[ChildActionOnly]
public ActionResult LocationGroup()
{
MyCustomModel model = new MyCustomModel (); //Should i really instantiate a new instace of the model??? and pass it to the partial view
return PartialView("_TempView", model);
}
Run Code Online (Sandbox Code Playgroud)
基本上,我的总体视图将包含 texboxex 的所有字段,但现在在我的部分视图中,我还希望我的模型中的这些属性中的很少一部分能够正确呈现,并且在提交表单后,该表单应该在与所有其他属性相同的模型中可用.
所以我的问题是,在将局部视图发回的操作中,我真的应该实例化模型的新实例吗?但是随后数据将在模型的 2 个实例之间拆分,不是吗?
如何安排,然后我如何从局部视图将数据分配给通用视图模型?
我没有得到你的问题,但你可以用注释ActionResultsHttpGet并HttpPost具有相同的名称(但不同的签名,因为他们毕竟是方法)像
[HttpGet]
[ChildActionOnly]
public ActionResult LocationGroup()
{
Model model = new Model();
return PartialView("_TempView", model);
}
Run Code Online (Sandbox Code Playgroud)
在您看来,您一定在做类似的事情
@model YOURMODELNAME
@using(Html.BeginForm("LocationGroup","Controller",FormMethod.POST)){
@Html.TextBoxFor(x=>x.UserName)
@Html.TextBoxFor(x=>x.Birthdate )
<input type="submit" value="submit" />
}
Run Code Online (Sandbox Code Playgroud)
现在定义一个帖子类型 ActionResult
[HttpPost]
[ChildActionOnly]
public ActionResult LocationGroup(YOUR_MODEL_TYPE model)
{
if(ModelState.IsValid){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
默认模型绑定器将查看 HttpContext 中发布的值名称与模型属性之间的匹配,并自动绑定该值
| 归档时间: |
|
| 查看次数: |
16101 次 |
| 最近记录: |