【问题标题】:populate view based on multi-level model基于多级模型填充视图
【发布时间】:2012-01-03 22:54:52
【问题描述】:

假设,我有模型:

public class Person
{
  public sting Name {get;set;}
  public List<Book> Books {get;set;}
}

public class Book
{
  public sting NameBook {get;set;}
}

如何基于 Person 模型 (MVC 3) 表示 Edit 方法的视图?

【问题讨论】:

    标签: asp.net asp.net-mvc-3 models


    【解决方案1】:

    您可以尝试以下方式:

    @model Person
    @using (Html.BeginForm())
    {
        <div>
            @Html.LabelFor(x => x.Name)
            @Html.EditorFor(x => x.Name)
        </div>
        @Html.EditorFor(x => x.Book)
        <button type="submit">Edit</button>
    }
    

    然后您将为 Book 类型 (~/Views/Shared/EditorTemplates/Book.cshtml) 定义一个编辑器模板,该模板将为 Book 属性集合的每个元素呈现(顺便说一下,您将按顺序命名为 Books在您的视图模型上遵循标准约定):

    @model Book
    <div>
        @Html.LabelFor(x => x.NameBook)
        @Html.EditorFor(x => x.NameBook)
    </div>
    

    就您的控制器操作而言,这是非常标准的东西:

    public ActionResult Edit(int id)
    {
        var person = _personRepository.Get(id);
        return View(model);
    }
    
    [HttpPost]
    public ActionResult Edit(Person person)
    {
        if (!ModelState.IsValid)
        {
            return View(person);
        } 
        _personRepository.Update(person);
        return RedirectToAction("Success");
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多