【问题标题】:How to handle `PartialRender` Models?如何处理“PartialRender”模型?
【发布时间】:2010-11-02 18:21:02
【问题描述】:

如果我碰巧有

public class DoorsModel
{
    public DoorsModel() { }

    public HttpPostedFileBase Image { get; set; }
    public String DoorLayout { get; set; }
    public bool ReplicateSettings { get; set; }
    public List<DoorDesignModel> Doors { get; set; }
}

public class DoorDesignModel
{
    public DoorDesignModel() { }

    public HttpPostedFileBase FrontFile { get; set; }
    public HttpPostedFileBase BorderFile { get; set; }
}

在我的View 中,我有一个正常的表单来填充模型属性,但List&lt;DoorDesignModel&gt; 我正在使用用户控件并使用

<%Html.RenderPartial("DoorDesign", Model.Doors); %>

DoorDesign.ascx里面我有:

<%@ Control 
       Language="C#" AutoEventWireup="true"
       Inherits="System.Web.Mvc.ViewUserControl<List<MyProject.Backend.Models.DoorDesignModel>>" %>

要显示所有表单,我有一个 for 子句

MyProject.Backend.Models.DoorDesignModel field;
for (i = 0; i < Model.Count; i++) { 
    field = Model[i];
    ... 
}

我正在使用 HTML

<input type="file" value="Upload file" 
    name="Doors.FrontFile[<%: i %>]" id="Doors.FrontFile[<%: i %>]">

但很快我按下提交按钮,我的模型返回一个null 列表:( 我在启动视图时创建并设置了一个新列表

public ActionResult Doors()
{
    DoorsModel model = new DoorsModel();

    model.Doors = new List<DoorDesignModel>();
    for (int i= 1; i<= 24; i++) // Add 24 Doors
        model.Doors.Add(new DoorDesignModel());

    return View(model);
}

[HttpPost]
public ActionResult Doors(DoorsModel model)
{
    // model.Doors is always null !!!

    if (ModelState.IsValid)
        ViewData["General-post"] = "Valid";
    else
        ViewData["General-post"] = "NOT Valid";

    return View(model);
}

我需要什么才能从RenderPartial 部分返回门列表?

一个简单的视图模型

【问题讨论】:

  • 1.您是否创建了 DoorsModel 模型活页夹? 2. 您是否将 From enctype 设置为“multipart/form-data”?
  • @Bivoauc 1. 是的,您可以在用户控件中将其视为继承我的模型 - 2. 是的,我可以在用户控件之外使用 Image,并且效果很好。

标签: asp.net-mvc-2 user-controls viewmodel


【解决方案1】:

刚刚遇到同样的问题。找到这个网站:http://weblogs.asp.net/nmarun/archive/2010/03/13/asp-net-mvc-2-model-binding-for-a-collection.aspx

基本上都是关于 &lt;input type="file" value="Upload file" name="Doors[&lt;%: i %&gt;].FrontFile" id="Doors[&lt;%: i %&gt;].FrontFile"&gt;

【讨论】:

  • 没错,我最终就是这样做的 :)
猜你喜欢
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 2011-02-19
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多