MVC如何在部分视图(创建)提交时点击控制器方法

时间:2016-04-03 00:51:04

标签: javascript jquery asp.net-mvc asp.net-mvc-4

创建点击(第二部分视图)未进入动作控制器。我使用了两个局部视图。我尝试了以下步骤。请参阅随附的屏幕截图

  1. 点击添加按钮(索引)时,下拉选择值将添加到局部视图(第一个局部视图)
  2. 单击“编辑”,将另一个部分视图(第二个)加载到div。
  3. 2&PVD(创建)点击,我计划验证模型(SubmitReview),生成xml并更新到上一个局部视图,但这不会发生。请看下面的代码并建议我如何实现?
  4. public ActionResult Index()
    {
        var DBQList = DBActivity.Getdbqlist();
        DBQModel viewmodel = new DBQModel();
        var DBQSelectList = new SelectList(DBQList, "DBQ_ID", "DBQ_Name", "IsSelected");
        viewmodel.selectList = DBQSelectList;
        Session["Session_DBQModel"] = viewmodel;
        return View(viewmodel);
    }
    
    [HttpPost]
    public ActionResult Index(DBQModel dbqModel)
    {
        if (ModelState.IsValid)
        {
            //
        }
        var mdl = (DBQModel)Session["Session_DBQModel"];
        var selectedvalue = Convert.ToInt32(Request.Form["SelectedId"].ToString());
        var rows = DBActivity.Getdbqlist().FirstOrDefault(x => x.DBQ_ID == selectedvalue);
        if (rows != null)
        {
            DBQTable tbl = new DBQTable();
            tbl.DBQ_ID = rows.DBQ_ID;
            tbl.DBQ_Name = rows.DBQ_Name;
            tbl.DBQ_Desc = rows.DBQ_Desc;
            tbl.VAFormNo = rows.VAFormNo;
            mdl.dbqTable.Add(tbl);
        }
        Session["Session_DBQModel"] = mdl;
        return View(mdl);
    }
    
    
    public PartialViewResult LoadDBQ(int id)
    {
        if (id==1)
        {
            EatingDisorder eatingDisorder = new EatingDisorder();
            return PartialView("_EatingDisorderPV", eatingDisorder);
        }
        return PartialView("_DefaultPV");
    }
    
            [HttpPost]
        public ActionResult SubmitReview(EatingDisorder _model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    string messages = string.Join("; ", ModelState.Values
                                        .SelectMany(x => x.Errors)
                                        .Select(x => x.ErrorMessage));
                    throw new Exception("Please correct the following errors: " + Environment.NewLine + messages);
                }
    
                if (_model.s1_Bulima)
                {
                    if ((_model.s1_Bulima_Date != null) && (string.IsNullOrEmpty(_model.s1_Bulima_ICD)) && (!string.IsNullOrEmpty(_model.s1_Bulima_Name)))
                    {
                        //ok
                    }
                    else
                    {
                        ModelState.AddModelError("s1_Bulima_Date", "s1_Bulima_Date is required.");
                        ModelState.AddModelError("s1_Bulima_ICD", "s1_Bulima_ICD is required.");
                        ModelState.AddModelError("s1_Bulima_Name", "s1_Bulima_Name is required.");
                    }
                }
    
                //save to db
                //return Json(new { Result = "OK" });
    
            }
            catch (Exception ex)
            {
                //return Json(new { Result = "ERROR", Message = ex.Message });
                ModelState.AddModelError("", ex.Message);
            }
            return PartialView("_EatingDisorderPV", _model);
        }
    

    Iindex.cshtml

    @model WebApplication1.Models.DBQModel
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
    
        @Html.DropDownListFor(n => n.SelectedId, Model.selectList, "Please select dbq", new { @class = "from-control col-md-4" })
        <input type="submit" value="Add" class="btn btn-default" />
    
        @Html.Partial("_DBQGridPV", Model.dbqTable)
    
        <div id="DBQHolder"></div>
    }
    

    _DBQGridPV.cshtml

    @model IEnumerable<WebApplication1.Models.DBQTable>
    <table class="table">
        <tr>
            <th>@Html.DisplayNameFor(model => model.DBQ_ID)</th>
            .....
            <th></th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.DBQ_ID)</td>
                .....
                <td>
                    @Ajax.ActionLink("Edit", "LoadDBQ", new { id = item.DBQ_ID }, 
                        new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "DBQHolder", InsertionMode = InsertionMode.Replace })|
                    @Html.ActionLink("Delete", "DeleteDBQ", new { id = item.DBQ_ID })
                </td>
            </tr>
        }
    </table>
    

    _EatingDisorderPV.cshtml

    @model WebApplication1.Models.EatingDisorder
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        .....
        <input type="submit" value="Create" />
    }
    

    enter image description here

0 个答案:

没有答案