Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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
Javascript MVC提交部分视图(创建)时如何点击控制器方法_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

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

Javascript MVC提交部分视图(创建)时如何点击控制器方法,javascript,jquery,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,创建单击(第二部分视图)未命中操作控制器。我使用了两种局部视图。我尝试了以下步骤。请参阅所附的屏幕截图 单击“添加”按钮(索引)时,下拉选择的值将添加到局部视图(第一个局部视图) 单击“编辑”,将另一个局部视图(第二个)加载到div中 第二次PV(创建)点击,我计划验证模型(SubmitReview),生成xml并更新到以前的部分视图,但这并没有发生。请看下面的代码,并建议我如何实现 public ActionResult Index() { var DBQList=DBActivity.Get

创建单击(第二部分视图)未命中操作控制器。我使用了两种局部视图。我尝试了以下步骤。请参阅所附的屏幕截图

  • 单击“添加”按钮(索引)时,下拉选择的值将添加到局部视图(第一个局部视图)
  • 单击“编辑”,将另一个局部视图(第二个)加载到div中
  • 第二次PV(创建)点击,我计划验证模型(SubmitReview),生成xml并更新到以前的部分视图,但这并没有发生。请看下面的代码,并建议我如何实现
  • public ActionResult Index()
    {
    var DBQList=DBActivity.Getdbqlist();
    DBQModel viewmodel=新的DBQModel();
    var DBQSelectList=newselectlist(DBQList,“DBQ_ID”,“DBQ_Name”,“IsSelected”);
    viewmodel.selectList=DBQSelectList;
    Session[“Session_DBQModel”]=viewmodel;
    返回视图(viewmodel);
    }
    [HttpPost]
    公共操作结果索引(DBQModel DBQModel)
    {
    if(ModelState.IsValid)
    {
    //
    }
    var mdl=(DBQModel)会话[“sessionu DBQModel”];
    var selectedvalue=Convert.ToInt32(Request.Form[“SelectedId”].ToString());
    var rows=DBActivity.Getdbqlist().FirstOrDefault(x=>x.DBQ_ID==selectedvalue);
    如果(行!=null)
    {
    DBQTable tbl=新的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(待定);
    }
    Session[“Session_DBQModel”]=mdl;
    返回视图(mdl);
    }
    公共PartialViewResult LoadDBQ(内部id)
    {
    如果(id==1)
    {
    进食障碍进食障碍=新进食障碍();
    返回PartialView(“\u EatingDisorderPV”,eatingDisorder);
    }
    返回部分视图(“默认PV”);
    }
    [HttpPost]
    公共行动结果提交视图(EatingDisorder\u模型)
    {
    尝试
    {
    如果(!ModelState.IsValid)
    {
    字符串消息=string.Join(“;”,ModelState.Values
    .SelectMany(x=>x.Errors)
    .选择(x=>x.ErrorMessage));
    抛出新异常(“请更正以下错误:“+Environment.NewLine+messages”);
    }
    如果(_model.s1_Bulima)
    {
    如果((_model.s1_Bulima_Date!=null)和(_model.s1_Bulima_ICD))和(_model.s1_Bulima_Name))和(_model.IsNullOrEmpty)
    {
    //嗯
    }
    其他的
    {
    AddModelError(“s1_Bulima_日期”,“s1_Bulima_日期是必需的”);
    AddModelError(“需要s1_Bulima_ICD”,“s1_Bulima_ICD”);
    AddModelError(“s1_Bulima_名称”,“s1_Bulima_名称是必需的”);
    }
    }
    //保存到数据库
    //返回Json(新的{Result=“OK”});
    }
    捕获(例外情况除外)
    {
    //返回Json(新的{Result=“ERROR”,Message=ex.Message});
    ModelState.addmodeleror(“,例如Message”);
    }
    返回PartialView(“\u EatingDisorderPV”,\u模型);
    }
    
    Iindex.cshtml

    @model WebApplication1.Models.DBQModel
    @使用(Html.BeginForm())
    {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    @DropDownListFor(n=>n.SelectedId,Model.selectList,“请选择dbq”,新建{@class=“from control col-md-4”})
    @Html.Partial(“_DBQGridPV”,Model.dbqTable)
    }
    
    _DBQGridPV.cshtml

    @model IEnumerable
    @DisplayNameFor(model=>model.DBQ_ID)
    .....
    @foreach(模型中的var项目)
    {
    @DisplayFor(modeleItem=>item.DBQ\u ID)
    .....
    @ActionLink(“编辑”,“LoadDBQ”,new{id=item.DBQ_id},
    新的AjaxOptions{HttpMethod=“GET”,UpdateTargetId=“DBQHolder”,InsertionMode=InsertionMode.Replace})|
    @ActionLink(“Delete”,“deleteddbq”,new{id=item.DBQ_id})
    }
    
    _eating.cshtml

    @model WebApplication1.Models.EatingDisorder
    @使用(Html.BeginForm())
    {
    @Html.AntiForgeryToken()
    .....
    }
    

    您遇到的第一个问题是生成的嵌套表单无效且不受支持。您好,Stephen,我已从eating无序pv.cshml(部分视图)中删除了表单标记。现在,整个页面(Index.cshtml)都有一个表单标记,即使它不起作用。如果您这样做了,则所有内容都将发回
    公共操作结果索引(DBQModel DBQModel)
    方法。但我怀疑你想让你的部分内容发回公共JsonResult SubmitReview(EatingDisorder(U model)?如果是这种情况,则仍然需要分部中的
    标记,但将分部移动到第一个
    的下方(这样它们就不会嵌套)。但是这意味着你的
    Index()
    POST方法没有真正意义,所以我不能从你的代码中确定你想做什么Hanks Stephen,你是对的,我想发回SubmitReview。因此,我将DBQHolder移到index.cshtml之外。这很好用。假设如果任何验证失败,我添加了ModelState.addmodeleror并返回模型的部分视图,但该模型消息不会显示,主索引页也消失了。为什么?请输入修改后的SubmitReview代码。如果要保持在同一页面上,则需要使用ajax提交表单,如果返回的部分存在验证错误,则用返回的部分替换现有部分。但是为什么不在属性上使用验证属性(例如
    [必需]
    属性)并使用客户端验证?