【问题标题】:Action returning Partial view and model动作返回局部视图和模型
【发布时间】:2013-05-20 18:37:24
【问题描述】:

我是 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  
  }

在这里我有一个看法

@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);
    }

基本上,我的一般视图将包含 texboxex 的所有字段,但现在在我的部分视图中,我也希望我的模型中的这些属性很少被正确呈现,并且在提交表单后应该可以在相同的模型中使用所有其他属性。

所以我的问题是,在返回部分视图的操作中,我真的应该实例化模型的新实例吗?但随后数据将在模型的 2 个实例之间拆分?

如何安排,然后如何将数据从局部视图分配到通用视图模型?

【问题讨论】:

    标签: asp.net-mvc-3 action partial-views


    【解决方案1】:

    我没有得到您的问题,但您可以使用具有相同名称(但签名不同,因为它们毕竟是方法)的 HttpGetHttpPost 对 ActionResults 进行注释

     [HttpGet]
     [ChildActionOnly]
        public ActionResult LocationGroup()
        {
            Model model = new Model();
            return PartialView("_TempView", model);
        }
    

    在视图中你必须做类似的事情

    @model YOURMODELNAME
    @using(Html.BeginForm("LocationGroup","Controller",FormMethod.POST)){
     @Html.TextBoxFor(x=>x.UserName)
     @Html.TextBoxFor(x=>x.Birthdate )
     <input type="submit" value="submit" />
    }
    

    现在定义一个帖子类型 ActionResult

     [HttpPost]
     [ChildActionOnly]
    public ActionResult LocationGroup(YOUR_MODEL_TYPE model)
    {
        if(ModelState.IsValid){
         //do something
        }
    }
    

    默认模型绑定器将在 HttpContext 中查找发布的值名称与模型属性之间的匹配,并自动绑定该值

    【讨论】:

    • 这将有助于理解问题
    猜你喜欢
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多