我有困难使用不显眼的ajax从联系我们表单中发布数据。
我的局部视图如下:
@model site.ViewModel.Home.ContactUsViewModel
@using (Ajax.BeginForm("_ContactUsPartial", "Home",
new AjaxOptions { UpdateTargetId = "result" }))
{
<fieldset>
<legend>Contact Us</legend>
@Html.ValidationSummary(true)
<div id="result"></div>
<div class="editor-label">
@Html.LabelFor(m => m.FullName)
@Html.ValidationMessageFor(m => m.FullName)</div>
<div class="editor-field">@Html.TextBoxFor(m => m.FullName)</div>
<!-- other fields from model -->
<input type="submit" value="Submit"/>
</fieldset>
}
我的局部视图像这样放置在另一个页面上:
@Html.Partial("_ContactUsPartial", new ContactUsViewModel());
我的家庭控制器如下:
[HttpPost]
public ActionResult _ContactUsPartial(ContactUsViewModel viewModel)
{
if (ModelState.IsValid)
{
try
{
//send email
return Content("Thanks for your message!");
}
catch (Exception ex)
{
return Content("Problem sending the email.");
}
}
return Content("oops. invalid model");
}
当我点击提交按钮时,我希望控制器返回一些文本内容,并将其放置在id为“result”的div中。
实际上发生的是,当我点击提交按钮时,我被重定向到/Home/_ContactUsPartial,并且只显示文本内容。
我不明白这里发生了什么......我已经尝试在网上查找示例,结果让自己越陷越深。
我在Web.config中启用了非侵入式javascript,也引用了jquery.unobtrusive-ajax.min.js。
在我的脚本文件夹中,我有以下相关文件:
- jquery.unobtrusive-ajax.min.js - jquery.validate.unobtrusive.min.js - MicrosoftMvcAjax.js
在我的_Layout.cshtml标签中,我声明了以下内容:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/bootstrap.min.js")" type="text/javascript"></script>
在我的Global.asax.cs文件的Application_Start方法中,我有这样一行代码:
BundleConfig.RegisterBundles(BundleTable.Bundles);
RegisterBundles的代码如下:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
我不确定bundle是什么以及它们如何工作,因为我好像已经通过这个ScriptBundle配置将它们引入...但是我还手动在_Layout.cshtml的头部进行了配置...
你有什么想法吗?我真的很希望能得到一些帮助!
/bundles/jquery”)@Script.render(“/bundles/jqueryui”)@Script.Render(“~/bundles/jqueryval”)。 - HaBo