MVC5模型无法记录文本框

时间:2015-09-19 08:43:04

标签: c# html asp.net-mvc asp.net-mvc-5

我不知道自己做得不好。

控制器:

public class PictureController : Controller
{
    // GET: Picture
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult AddGroup()
    {
        ModelPhotoGroup p = new ModelPhotoGroup();
        return View(p);
    }
    [HttpPost]
    public ActionResult AddGroup(ModelPhotoGroup p)
    {
        return View(p);
    }
}

在AddGroup of HttpPost中,我得到一个p.GroupName = null,但我在文本框中写文字

查看:

@model Boda.WebUI.Models.ModelPhotoGroup

@{
    ViewBag.Title = "";
}

<h2>Crear grupo de fotos</h2>
<div class="row">
    <div class="col-lg-6 col-lg-offset-3 col-md-6 col-md-offset-3 col-sm-8 col-md-offset-2">
        <div class="well">
            @using (Html.BeginForm())
            {
                @Html.HiddenFor(x => x.GroupName)
                <div class="form-group">
                    @Html.LabelFor(x => x.GroupName)
                    @Html.TextBoxFor(x => x.GroupName, new { @class = "form-control" })
                    @Html.ValidationMessageFor(x => x.GroupName)
                </div>
                <div class="btn-group">
                    <input type="submit" value="Guardar" class="btn btn-success" />
                    @Html.ActionLink("Cancelar y volver a la lista de Fotografias", "Index", null, new
                   {
                       @class = "btn btn-default"
                   })
                </div>
            }
        </div>
    </div>
</div>

这是观点。只有一个TextBoxt可以写出组的名称

HTML生成:

<form action="/Picture/AddGroup" method="post"><input id="GroupName" name="GroupName" type="hidden" value="">                <div class="form-group">
                <label for="GroupName">GroupName</label>
                <input class="form-control" id="GroupName" name="GroupName" type="text" value="">
                <span class="field-validation-valid" data-valmsg-for="GroupName" data-valmsg-replace="true"></span>
            </div>
            <div class="btn-group">
                <input type="submit" value="Guardar" class="btn btn-success">
                <a class="btn btn-default" href="/Picture">Cancelar y volver a la lista de Fotografias</a>
            </div>

2 个答案:

答案 0 :(得分:1)

您已包含

@Html.HiddenFor(x => x.GroupName)

@Html.TextBoxFor(x => x.GroupName)

隐藏输入的值将是初始化模型时GroupName的默认值(即null

POST时,DefaultModelBinder将属性GroupName的值设置为从表单数据(隐藏输入的数据)中读取的第一个值,并忽略具有相同名称的任何后续值,因此该属性始终为null

删除隐藏的输入,您的模型将与文本框中的值正确绑定。

答案 1 :(得分:0)

这是因为你没有指定动作和控制器, 在表单中添加操作和控制器的名称

@using(Html.BeginForm("AddGroup","Picture"))