Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么提交按钮将空数据从视图传递到控制器_C#_Asp.net Mvc 3 - Fatal编程技术网

C# 为什么提交按钮将空数据从视图传递到控制器

C# 为什么提交按钮将空数据从视图传递到控制器,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我对C#和MVC非常陌生,这看起来可能是一个基本问题,但即使在彻底搜索了有类似问题的人之后,我也无法让它起作用 问题出在我在编辑视图上的提交按钮上,出于某种原因,它将空数据传递给Update方法,而不是表单输入数据 这是一种观点: <div class="row-fluid metro"> <div class="span2 offset4"> @using (Html.BeginForm("Update", "Realty", FormMethod.Post)

我对C#和MVC非常陌生,这看起来可能是一个基本问题,但即使在彻底搜索了有类似问题的人之后,我也无法让它起作用

问题出在我在编辑视图上的提交按钮上,出于某种原因,它将空数据传递给Update方法,而不是表单输入数据

这是一种观点:

<div class="row-fluid metro">
<div class="span2 offset4">

    @using (Html.BeginForm("Update", "Realty", FormMethod.Post))
    {

        @Html.HiddenFor(model => model.Address)
        @Html.HiddenFor(model => model.Details)
        @Html.HiddenFor(model => model.Manager)
        @Html.ValidationSummary(true)
        <div class="control-group">
            <label class="control-label">Details</label>
            <div class="controls">
                @Html.EditorFor(model => model.Details)
                @Html.ValidationMessageFor(model => model.Details)
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">Address</label>
            <div class="controls">
                @Html.EditorFor(model => model.Address)
                @Html.ValidationMessageFor(model => model.Address)
            </div>
        </div>


        <div class="control-group">
            <label class="control-label">Manager</label>
            <div class="controls">
                  @Html.DropDownListFor(model => model.Manager.Id, Model.Managers)

               </div>
        </div>



        <div class="form-actions">
            <button type="submit" class="btn btn-primary">Guardar</button>
            <a href="@Url.Action("Index", "Realty")"><button type="button" class="btn">Cancelar</button></a>
        </div>
    }
</div>
任何帮助都将不胜感激,提前感谢

         public ActionResult Edit(int id)
    {
        List<SelectListItem> managers = new List<SelectListItem>();
        var model = new RealtyViewModel();

        if (id != 0)
        {
            var realty = this.realtyService.Get(id);
            var mvm = new ManagerViewModel(realty.Manager.Id, realty.Manager.Name, realty.Manager.Age);
            model = new RealtyViewModel(realty.Id, realty.Address, realty.Details, mvm);
        }
        foreach (var Manager in managerService.GetAll())
        {
            managers.Add(new SelectListItem { Value=Manager.Id.ToString(),Text=Manager.Name});
        }
        model.Managers = managers;
        return this.View(model);
    }
public ActionResult编辑(int-id)
{
列表管理器=新列表();
var模型=新的RealtyViewModel();
如果(id!=0)
{
var realty=this.realtyService.Get(id);
var mvm=新的ManagerViewModel(realty.Manager.Id、realty.Manager.Name、realty.Manager.Age);
模型=新的RealtyViewModel(realty.Id、realty.Address、realty.Details、mvm);
}
foreach(managerService.GetAll()中的var管理器)
{
添加(新的SelectListItem{Value=Manager.Id.ToString(),Text=Manager.Name});
}
模型。经理=经理;
返回此.View(model);
}

尝试从此表单中删除隐藏字段

<div class="row-fluid metro">
<div class="span2 offset4">

    @using (Html.BeginForm("Update", "Realty", FormMethod.Post))
        {
        @Html.ValidationSummary(true)
            <div class="control-group">
            <label class="control-label">Details</label>
            <div class="controls">
                @Html.EditorFor(model => model.Details)
                @Html.ValidationMessageFor(model => model.Details)
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">Address</label>
            <div class="controls">
                @Html.EditorFor(model => model.Address)
                @Html.ValidationMessageFor(model => model.Address)
            </div>
        </div>


        <div class="control-group">
            <label class="control-label">Manager</label>
            <div class="controls">
                  @Html.DropDownListFor(model => model.Manager.Id, Model.Managers)

               </div>
        </div>



        <div class="form-actions">
            <button type="submit" class="btn btn-primary">Guardar</button>
            <a href="@Url.Action("Index", "Realty")"><button type="button" class="btn">Cancelar</button></a>
        </div>
    }
</div>

@使用(Html.BeginForm(“更新”,“不动产”,FormMethod.Post))
{
@Html.ValidationSummary(true)
细节
@EditorFor(model=>model.Details)
@Html.ValidationMessageFor(model=>model.Details)
地址
@EditorFor(model=>model.Address)
@Html.ValidationMessageFor(model=>model.Address)
经理
@DropDownListFor(model=>model.Manager.Id,model.Managers)
瓜达尔
}

调试器是否进入您的操作方法?检查Request.Form如果您的表单值在这里传递?我输入该方法,但参数上的所有属性都为null。如何检查Request.Form?作为一个选项,您可以使var Form=Request.Form;在您的操作中,检查集合中是否存在视图中的值。或者您可以在调试时添加Watch Request.Form并查看此值。那么您查看的模型类型是什么?它应该是@model=RealtyViewModelform,检索到的是地址和详细信息字段,但由于某些原因,不是管理器字段。如何使值存储在模型中?或者至少经理字段中缺少了什么使其无法进入表单需求?我这样做了,情况仍然是一样的。
         public ActionResult Edit(int id)
    {
        List<SelectListItem> managers = new List<SelectListItem>();
        var model = new RealtyViewModel();

        if (id != 0)
        {
            var realty = this.realtyService.Get(id);
            var mvm = new ManagerViewModel(realty.Manager.Id, realty.Manager.Name, realty.Manager.Age);
            model = new RealtyViewModel(realty.Id, realty.Address, realty.Details, mvm);
        }
        foreach (var Manager in managerService.GetAll())
        {
            managers.Add(new SelectListItem { Value=Manager.Id.ToString(),Text=Manager.Name});
        }
        model.Managers = managers;
        return this.View(model);
    }
<div class="row-fluid metro">
<div class="span2 offset4">

    @using (Html.BeginForm("Update", "Realty", FormMethod.Post))
        {
        @Html.ValidationSummary(true)
            <div class="control-group">
            <label class="control-label">Details</label>
            <div class="controls">
                @Html.EditorFor(model => model.Details)
                @Html.ValidationMessageFor(model => model.Details)
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">Address</label>
            <div class="controls">
                @Html.EditorFor(model => model.Address)
                @Html.ValidationMessageFor(model => model.Address)
            </div>
        </div>


        <div class="control-group">
            <label class="control-label">Manager</label>
            <div class="controls">
                  @Html.DropDownListFor(model => model.Manager.Id, Model.Managers)

               </div>
        </div>



        <div class="form-actions">
            <button type="submit" class="btn btn-primary">Guardar</button>
            <a href="@Url.Action("Index", "Realty")"><button type="button" class="btn">Cancelar</button></a>
        </div>
    }
</div>