从表单中获取额外价值

时间:2013-07-23 08:50:59

标签: asp.net-mvc razor

我的表单和控制器如下。基本上我正在尝试获取控制器中的表单值模式,cmd值始终设置但我的模式未设置,我不知道如何获取值,任何人都可以告诉我如何获取它? 或者如何使用与cmd字符串相同的方法获取它?

由于

using (Ajax.BeginForm("AddEditRecord", "Equipment", new AjaxOptions { HttpMethod = "POST",OnSuccess = "onSuccess()", LoadingElementId = "dvLoading" }))
{    
    @Html.ValidationSummary(true)
<div id="equipmentDialog">    
    @Html.Hidden("hidMode", Request.QueryString["mode"].ToString())
    <fieldset>
        <legend>Product</legend>
        @if (ViewBag.IsUpdate == true)
        {
             @Html.HiddenFor(model => model.ID)
        }
        <div class="editor-label">
            @Html.LabelFor(model => model.MachineName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.MachineName)
            @Html.ValidationMessageFor(model => model.MachineName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.AssetNo)
        </div>
        <div class="editor-field">
            @Html.TextAreaFor(model => model.AssetNo)
            @Html.ValidationMessageFor(model => model.AssetNo)
        </div>
        <p>
            @if (ViewBag.IsUpdate == true)
            {
                <input type="submit" value="Update" id="btnUpdate" name="cmd" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" />
            }
            else
            {
                <input type="submit" value="Add" id="btnSave" name="cmd" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" />
            }
            <input type="button" value="Cancel" id="btncancel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" />
        </p>
    </fieldset>
</div>
}

我的附加控制器就是这个

public ActionResult AddEditRecord(tblEquipment Equipment, string cmd, string mode)
        {
            if (ModelState.IsValid)
            {
                switch (cmd)
                {
                    case "Add":
                        try
                        {
                            db.tblEquipments.Add(Equipment);
                            db.SaveChanges();
                            return RedirectToAction(mode);
                        }
                        catch { }
                        break;
                    case "Update":
                        try
                        {
                            tblEquipment Item = db.tblEquipments.Where(m => m.ID == Equipment.ID).FirstOrDefault();
                            if (Item != null)
                            {
                                Item.AssetNo = Equipment.AssetNo;
                                Item.MachineName = Equipment.MachineName;
                                db.SaveChanges();
                            }
                            return RedirectToAction(mode);
                        }
                        catch { }
                        break;
                }
            }

            if (Request.IsAjaxRequest())
            {
                return PartialView("_AddEdit", Equipment);
            }
            else
            {
                return View("AddEdit", Equipment);
            }
        }

1 个答案:

答案 0 :(得分:1)

错误在这里:

@Html.Hidden("hidMode", Request.QueryString["mode"].ToString())

您将名称hidMode提供给隐藏字段,并将其视为控制器中的cmd。因此,要么重命名隐藏字段,要么在控制器操作中重命名输入参数