原谅我,我是MVC和AJAX的新手。
当前,我只是提交一个表单,并且我想使用表单中的数据来使用ajax在局部视图中更新表。
我的_UserInfo
局部视图如下所示:
@model IEnumerable<Dashboard.Models.UserInfo>
<table>
<tr>
<th>
Firstname
</th>
<th>
Lastname
</th>
<th>
EmailAddress
</th>
<th>
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.firstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.surname)
</td>
<td>
@Html.DisplayFor(modelItem => item.emailAddress)
</td>
<td>
@Html.DisplayFor(modelItem => item.SAMuserName)
</td>
</tr>
}
</table>
我的主User
视图如下所示:
@model Dashboard.Models.User
@Scripts.Render("~/bundles/jqueryval")
@using (Ajax.BeginForm("_UserInfo", "User", new AjaxOptions()
{
HttpMethod = "GET",
UpdateTargetId = "results",
InsertionMode = InsertionMode.Replace
}))
{
<fieldset>
//...My Form
<p>
<input type="submit" value="Find" />
</p>
</fieldset>
}
<div id="results">
</div>
最后这是我的UserController
:
public PartialViewResult UserResults(User person)
{
UserInfo personInfo = new UserInfo();
//....Doing stuff
return PartialView("_userInfo", personInfo);
}
现在我知道这可能不好。但是,这是我凭自己的小知识尝试过的最佳尝试。
单击“用户”视图上的按钮时,出现404错误,提示找不到_UserInfo。
我相信我所有问题的根源都在
@using (Ajax.BeginForm("_UserInfo", "User", new AjaxOptions()
{
HttpMethod = "GET",
UpdateTargetId = "results",
InsertionMode = InsertionMode.Replace
}))
但是据我所知,我不知道出什么问题了。
*编辑: *正如已经指出的那样,我错误地创建了HTML表单。从那以后我将其更改为
@using(Ajax.BeginForm(“ UserResults”,“ User”,新的AjaxOptions(){...}
我的行动现在被召唤!但是,我的局部视图没有被加载到屏幕上。
对于特定的重载,前两个字符串是ActionName和ControllerName MSDN。因此,它应该像这样镜像您的控制器:
@using (Ajax.BeginForm("userResults", "User", new AjaxOptions()
{
HttpMethod = "GET",
UpdateTargetId = "results",
InsertionMode = InsertionMode.Replace
}))
另外,值得注意的是,在以下命名约定中,应将userResults重命名为UserResults
编辑:确保您同时使用Ajax.BeginForm(请参阅更新),并且还已经将ajax不引人注目的脚本包含在包中。在BundleConfig.RegisterBundles中,应该添加以下捆绑包。
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*"));
并且在您的HTML中,确保两个包都被调用。
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句