【发布时间】:2018-02-11 09:42:02
【问题描述】:
我有一个表单,我使用Ajax.BeginForm 提交。我想做以下事情:
- 提交包含所有数据的表单(使用
Ajax.BeginForm) - 在我们等待控制器时,做一些工作 - 包括截断我的文本区域
- 控制器完成后(使用
OnSuccess),做更多的事情
但是,虽然 1) 和 3) 可以完美运行,但我不知道通过哪种方式访问 #2。我曾尝试在表单上使用 JavaScript 事件 submit,但似乎这个事件之前发生过,所以如果我清空我的 textarea 控制器永远不会看到这个填充值。
我的剃刀:
@using (Ajax.BeginForm("CreateNotification", "Task",null, new AjaxOptions() {HttpMethod = "POST", OnSuccess= "newMessage" },new {id="conv_form"}))
{
@Html.HiddenFor(c => c.ConversationId)
<div class="form-group">
@Html.TextAreaFor(c => c.New_Message, new {@class = "form-control conversation-box"})
</div>
<input type="submit" value="Send message" id="conversation_message_submit" class="btn btn-link pull-right" style="color: black; padding-right: 0px; font-size: 12pt;"/>
}
我也有我的 jQuery:
<script>
$(document).ready(function() {
/// Here I plan to truncate my textarea + other stuff
$('#conv_form').submit(function () {
console.log('conv_form submit');
});
});
function newMessage(data) {
console.log('newmessage fired');
}
</script>
所以我的挑战是,对于我的submit 事件,如果我操纵这些字段,这将改变我们发送给控制器的内容。我想访问发送到控制器和OnSuccess 之间的事件。
【问题讨论】:
-
你试过使用jQuery的ajaxStart()函数api.jquery.com/ajaxStart
-
使用AjaxOptions.OnBegin 属性
标签: jquery ajax asp.net-mvc razor ajaxform