首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交asp.net MVC2表单时模型为空

提交asp.net MVC2表单时模型为空
EN

Stack Overflow用户
提问于 2010-09-24 22:41:19
回答 2查看 1.1K关注 0票数 1

我在控制器和视图中有以下代码。问题是模型(Photo是一个实体框架实体)是空的(所有字段都为空)。为什么?

代码语言:javascript
复制
// GET: /Admin/Photo/Create

    public ActionResult Create()
    {
        return View();
    } 

    //
    // POST: /Admin/Photo/Create

    [HttpPost]
    public ActionResult Create(int id, FormCollection collection)
    {
        try
        {
            var file = (HttpPostedFileBase) Request.Files[0];
            if (file != null && file.FileName != null)
            {
                var filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Photos/Product/", Path.GetFileName(file.FileName));
                file.SaveAs(filename);
                var photo = new Photo();
                photo.Description = collection["Description"];
                photo.Main = collection["Main"].Contains("true");
                photo.Filename = Path.GetFileName(file.FileName);
                photo.Product_Id = id;
                Entities.AddToPhotos(photo);
                Entities.SaveChanges();
            }
            else
            { 
                ModelState.AddModelError("", "Plik musi zostać załadowany.");
                return View();
            }


            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

代码语言:javascript
复制
<h2>Create</h2>

<% using (Html.BeginForm(null, null, null, FormMethod.Post, new {enctype = "multipart/form-data" })) {%>
    <%: Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Description) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Description) %>
            <%: Html.ValidationMessageFor(model => model.Description) %>
        </div>

        <div class="editor-label">
            <label for="MainContent_file">Plik: </label>
        </div>
        <div class="editor-field">
            <asp:FileUpload ID="file" runat="server" />
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Main) %>
        </div>
        <div class="editor-field">
            <%: Html.CheckBoxFor(model => model.Main) %>
            <%: Html.ValidationMessageFor(model => model.Main) %>
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

<div>
    <%: Html.ActionLink("Back to List", "Index") %>
</div>

更新:我检查了一下,集合中填充了适当的字段,但它们都是空的。

EN

回答 2

Stack Overflow用户

发布于 2010-09-24 23:09:35

检查以确保结果html中的name属性与您的集合名称匹配。您还可以将public ActionResult Create(int id, FormCollection collection)更改为public ActionResult Create(int id, YourViewModel model),以自动将post值映射到模型。

票数 1
EN

Stack Overflow用户

发布于 2010-09-24 23:51:19

在浏览器中检查html源代码。

它可能会将它们发送为:"Photo.Description“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3788154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档