【发布时间】:2023-04-03 08:54:01
【问题描述】:
在显示框中显示一些文本,当用户更改 下拉列表中的值时。为此我使用了 PartialView、Ajax.BeginForm和Jquery.change函数。
问题:在主View*中,我使用**@html.Beginform()和@Ajax.BeginForm在 partial view 中,所以当我更改 Dropdownlist 中的值时,Jquery Form submit 在 main-View other 中调用 @html.Beginform()比 @Ajax.BeginForm
预期行为:Jquery 表单提交 应在部分视图中调用 @Ajax.BeginForm
//following Scripts are included in View, Partial-View
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
在主视图中
@model Shopping.Models.Mob
//Issue:This "Html.BeginForm" is called during submitting from partial View
@using (Html.BeginForm("MobileSell", "MobileSell", FormMethod.Post))
{
<table>
<tr><td>**@Html.Partial("_SelectedMobileList", Model)**</td>
</tr>
<tr><td><div id="NextFields">**@Html.Partial("_SelectedMobileDetails", Model)**</div></td>
</tr>
</table>
}
在 _SelectedMobileList 部分视图中
@using (Ajax.BeginForm("FillMobileDetails", "MobileSell", new AjaxOptions { HttpMethod ="POST",
UpdateTargetId ="NextFields",
InsertionMode = InsertionMode.Replace}))
{
<td>@Html.DropDownListFor(x => x.MobileName, Model.MobileList, "select one", new { id="Drop1"})</td>
}
<script>
$(document).ready(fun1)
function fun1()
{ alert("test1"); $("#Drop1").change(fun2); }
function fun2()
{alert("test2");
//Jquery function calling submit-form
//Expected to invoke "Ajax.BeginForm" but invoking "html.BeginForm"
$(this).parents('form').submit();
}
</script>
在_SelectedMobileDetails Partial-View中,需要显示测试
@model Shopping.Models.Mob
@Html.DisplayFor(x=>x.MobileEmi)
在控制器中
//Issue: Invoking this action-method.
public ActionResult MobileSell()
{
ObjectResult<SP_Fetch_Mobile_Details_Result> objResult = objContext.SP_Fetch_Mobile_Details();
SelectList objSelectList = new SelectList(objResult.ToList(), "MobileName", "MobileName");
objMobile.MobileList = objSelectList;
return View(objMobile);
}
[HttpPost]
//Excepted: To invoke this Action Method
public PartialViewResult FillMobileDetails(Mob Model)
{
Response.Write("test3");
Model=new Mob();
Model.MobileEmi="somEmi";
return PartialView("_SelectedMobileDetails",Model);
}
【问题讨论】:
-
也许您应该使用简单的 $.ajax 调用,而不是 ajax 形式,作为一种解决方法。您的操作将返回带有详细信息(而不是查看)的 json,在您需要的地方解析并获取它。
-
@Den 谢谢,因为我是 ajax 新手,请帮我将以下内容转换为简单的 ajax 调用
@using (Ajax.BeginForm("FillMobileDetails", "MobileSell", new AjaxOptions { HttpMethod ="POST", UpdateTargetId ="NextFields", InsertionMode = InsertionMode.Replace}))
标签: jquery ajax asp.net-mvc asp.net-mvc-4 asp.net-ajax