我是Asp.net MVC的新手,我研究过Ajax.BeginForm但是当我应用代码时它没有用.你能Ajax.Beginform与View,Controller,Model 分享一个非常简单的例子吗?谢谢.
我试图使用这里提到的一个例子如何用multipart/form-data做一个ASP.NET MVC Ajax表单帖子?
但我一直收到"失败"错误消息框
Index.cshtml
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<h2>Files Upload</h2>
<script type="text/javascript">
$(function() {
$("#form0").submit(function(event) {
var dataString;
event.preventDefault();
var action = $("#form0").attr("action");
if ($("#form0").attr("enctype") == "multipart/form-data") {
//this only works in some browsers.
//purpose? to submit files over ajax. because screw iframes.
//also, we need to call .get(0) on the jQuery element to turn it into a regular DOM element so that FormData can use it.
dataString = new FormData($("#form0").get(0));
contentType = false;
processData = false;
} …Run Code Online (Sandbox Code Playgroud) 你如何从ajax表单中提交下拉列表"onchange"事件?
根据以下问题:如何在 html.BeginFrom中提交asp.net mvc中的下拉列表,您可以设置onchange ="this.form.submit"并更改下拉帖子.
但是,使用以下代码(在Ajax.BeginFrom中):
<% using (Ajax.BeginForm("UpdateForm", new AjaxOptions() { UpdateTargetId = "updateText" })) { %>
<h2>Top Authors</h2>
Sort by: <%=Html.DropDownList("sortByList", new SelectList(ViewData["SortOptions"], new { onchange = "this.form.submit()" })%>
<%= Html.TextBox("updateText")%>
<% } %>
Run Code Online (Sandbox Code Playgroud)
回发到控制器操作,但整个页面被替换为"updateText"文本的内容,而不是"updateText"文本框中的内容.
因此,不是仅替换Ajax.BeginForm中的区域,而是替换整个页面.
dropdownlist调用this.form.submit的正确方法是什么,只有Ajax.BeginForm中的区域?
我在使用Ajax.BeginForm时遇到了一些困难
在视图中我有类似的东西
<% using (Ajax.BeginForm("ActionName", null , null, new { id = "FormName" }))
{%>
<input type="hidden" value = '<%= Html.Encode( Model.id) %>' name="id"/>
<textarea id="message" name=message rows="4" style="width: 90%">
</textarea>
<% }%}
Run Code Online (Sandbox Code Playgroud)
而动作方法就是这样的
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public ActionResult ActionName(int id, string message)
{
....
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将'id'和'message'传递给action方法.我正在为routeValues传递'null',但我不知道该传递什么.理想情况下,我试图找到一个不需要路由值的重载,但是使用了actionName和htmlattributes(用于表单名称),但我找不到一个.我不想在视图模型中添加"message",我确实需要用于jquery操作的FormName.解决这个问题的最佳方法是什么?
哦,我忘了提,这就是我发布表格的方式
$.post($("#FormName").attr('action'), $("#FormName").serialize(),
function(result) {
$("#correspondingDiv").html(result);
}
);
Run Code Online (Sandbox Code Playgroud) 我与Asp.net MVC3有关,
我有一个用Ajax处理的表单,如下所示:
@using(Ajax.BeginForm("dtjson",新的AjaxOptions {HttpMethod ="Post",UpdateTargetId ="detalle_tarifa",OnSuccess ="exito2",OnBegin ="bloquear"}))
我的问题是,当我提交数据时,它会发送两次请求.
让我们来看看视图.
这是形式:

好的,现在提交后的视图:

这一个是显示firebug调试:

在布局上,我有那些javascript文件..
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.windows-engine.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.jqDock.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.jqDock.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.tablePagination.0.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.tools.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.cookie.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.treeview.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.treeview.edit.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
在视图(部分视图)上,我有这个:
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script type="text/javascript" src=@Url.Content("~/Content/tinymce/jscripts/tiny_mce/jquery.tinymce.js")></script>
<script type="text/javascript" src=@Url.Content("~/Content/tinymce/jscripts/tiny_mce/tiny_mce.js")></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Href("~/Scripts/jquery.uploadify.js")" type="text/javascript"></script>
<script src="@Href("~/Scripts/jquery.scrollTo.js")" type="text/javascript"></script>
<script src="@Href("~/Scripts/jquery.blockUI.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="/Scripts/jquery.cookie.js" type="text/javascript"></script>
<script …Run Code Online (Sandbox Code Playgroud) 我的表格如下
<div id="contact-form" class="hidden" title="Online Request Form">
@Using (Ajax.BeginForm("Contact", "Main",
Nothing,
New AjaxOptions With {.UpdateTargetId = "status", .HttpMethod = "post"},
New With {.id = "contactUs"}))
@<div>
@Html.LabelFor(Function(m) m.Name)<br />
@Html.TextBoxFor(Function(m) m.Name)<br />
@Html.LabelFor(Function(m) m.Phone)<br />
@Html.TextBoxFor(Function(m) m.Phone)<br />
@Html.LabelFor(Function(m) m.Email)<br />
@Html.TextBoxFor(Function(m) m.Email)<br />
@Html.LabelFor(Function(m) m.Question)<br />
@Html.TextAreaFor(Function(m) m.Question)<br />
@Html.LabelFor(function(m) m.Security)<br />
@Html.TextBoxFor(Function(m) m.Security)<br />
<noscript>
<input type="submit" name="submit" value="Ok" />
</noscript>
@Html.ValidationSummary("Oops, please correct the errors.")<span id="status">@TempData("status")</span>
</div>
End Using
</div>
Run Code Online (Sandbox Code Playgroud)
我在jQuery-UI模式窗口中打开它
<script>
$(function () {
// Open …Run Code Online (Sandbox Code Playgroud) 关于Ajax.BeginForm的问题有很多关于使用返回局部视图正确更新目标元素的问题:
mvc4 ajax更新同一页面
ASP.NET MVC 4 - Ajax.BeginForm和html5
MVC 4(razor) - 控制器是返回部分视图但整个页面正在更新
MVC 4 Ajax没有更新页面中的PartialView
但是,所有这些都可以通过手动写出jQuery ajax或包含丢失的javascript文件来回答.
@using (Ajax.BeginForm("PostcardDetails", new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "details"
}))
{
<div id="PostcardSearchResults">
@{Html.RenderAction("PostcardSearchResults", Model);}
</div>
}
<div id="details">
</div>
Run Code Online (Sandbox Code Playgroud)
相关控制器代码:
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult PostcardSearchResults(PostcardSearchFilter filter)
{
PostcardSearchResults model = new PostcardSearchResults(filter);
return PartialView("_PostcardSearchResults", model);
}
Run Code Online (Sandbox Code Playgroud)
在我的布局中,我引用了这些jQuery文件.此外,我已经验证页面正在输出正确的路径,并且它找到了正确的文件.我试着开关的顺序unobtrusive-ajax.min.js和validate.min.js,没有成功.
<script type="text/javascript" src="@Url.Content("~/Scripts/globalize.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.9.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.10.0.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> …Run Code Online (Sandbox Code Playgroud) 好吧,我是一个网络新手,但我必须承认我现在已经完全迷上了.这是我的问题:
我有一个带有MVCContrib网格的页面和一个"添加帐户"链接,它会打开一个包含在JQuery对话框中的Ajax表单.当我第一次完成工作流程时,一切都很好.我可以通过JQuery/Ajax添加一个新项目并刷新网格(所以我认为).但是,当我尝试第二次添加表单时,始终会提交第一个表单中的数据.我一直在看这个问题的时间太长了,必须承认我完全陷入困境.顺便说一句 - 我确定我这样做完全错了所以请随意提出更好的建议.
这是表格:
@using (Ajax.BeginForm("SaveCheckAccount", "UserManagement", null, new AjaxOptions { OnSuccess = "onAccountAdded", OnFailure = "onAccountAddedFailed"}, new { id = "accountDetails" }))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.version)
@Html.HiddenFor(model => model.User_Id)
@Html.HiddenFor(model => model.IsDefault)
<table>
<tr>
<td>
Account Number
</td>
<td>
@Html.TextBoxFor(model => model.AccountNumber)
@Html.ValidationMessageFor(model => model.AccountNumber, "*")
</td>
</tr>
<tr>
<td>
Routing Number
</td>
<td>
@Html.TextBoxFor(model => model.RoutingNumber)
@Html.ValidationMessageFor(model => model.RoutingNumber, "*")
</td>
</tr>
<tr>
<td>
Account Type
</td>
<td>
@Html.DropDownListFor(model => model.AccountType_Id, new SelectList(@accountTypes, …Run Code Online (Sandbox Code Playgroud) 我在我的MVC3应用程序中有这个简单的ajax表单,它发送电子邮件消息:
@using (Ajax.BeginForm("SendMessage", new AjaxOptions {
LoadingElementId = "wait",
OnSuccess = "loadMessages",
OnFailure = "showError" }))
{
<input type="text" name="message" placeholder="Message" />
<input type="submit" name="submit" value="Send" />
}
Run Code Online (Sandbox Code Playgroud)
如果操作无法发送消息,则会抛出异常.异常处理并显示在showError(error){} javascript函数中:
function showError(error) {
$("#error").text(error.responseText);
};
Run Code Online (Sandbox Code Playgroud)
问题是:error.responseText是整个错误页面的html转储.
我只需要显示异常错误消息(MVC3中ex.Message中的任何内容).
"public ActionResult SendMessage(string message){}"的实现是无关紧要的.
我需要知道如何只在showError(错误)javascript处理程序中显示异常的消息.
谢谢一堆.
[HttpPost]
public ActionResult SendMessage(string message)
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("sender@gmail.com");
mail.Subject = "Some Message";
mail.Body = message;
mail.To.Add("recepient@gmail.com");
SmtpServer.Send(mail);
return null;
}
Run Code Online (Sandbox Code Playgroud) 我在我的MVC 3 + Razor应用程序中使用Ajax.Begin Form
using (Ajax.BeginForm("ActionName", "ControllerName", new AjaxOptions { OnBegin = "ValidateDateFunction('" + @abc.xyz + "')", HttpMethod = "POST", UpdateTargetId = "savebutton" }))
{
<input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)
下面是我的onBegin方法的样子.我传递一个值给这个方法,我能够得到一个适当的警报.
function ValidateDateFunction(id) {
alert(id);
if(some-ConditionUsing-formId)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在使用这个我希望如果我的条件失败,那么不应该调用动作.但在我的情况下,在这两种情况下都会调用我的动作.
请帮忙.
以下是我的实际验证方法
function ValidateDateFunction(fId) {
var first = document.getElementById("startDate" + fId);
var second = document.getElementById("endDate" + fId);
if (first.value == "" && second.value != "") {
alert("Please select both dates");
return false;
}
else if …Run Code Online (Sandbox Code Playgroud)