gpt4 book ai didi

c# - 在没有 @HTML.Beginform 的情况下发布表单并在 asp.net MVC 中使用 Jquery(ajax)

转载 作者:可可西里 更新时间:2023-11-01 08:55:43 25 4
gpt4 key购买 nike

如何在不使用 @HTML.Beginform 而改用 JQuery Ajax 的情况下填写表单?现在我尝试了:

    var postData = { form1: username, form2: password };

$.ajax({
type: "POST",
url: '/Controller/Method',
data: postData,
dataType: "json",
traditional: true
});

但是在发布之后,浏览器没有导航到正确的 View 。当然,我在 Controller 中正确地返回了 View() 。使用 Fiddler 我看到它已正确发布并且响应也正确......

必须使用@HTML.Beginform 还是可以使用 Ajax 来实现?

最佳答案

您可以使用原始 HTML <form>标签或 @HTML.BeginForm helper 。这是一个仅使用 HTML 的示例

完整的解决方案:

<form action"/Controller/Method" method="POST" id="signInForm">
<input type="text" name="form1" />
<input type="text" name="form2" />
<input type="submit" value="Sign in" />
</form>

$( function() {
$( 'signInForm' ).submit( function( evt ) {
//prevent the browsers default function
evt.preventDefault();
//grab the form and wrap it with jQuery
var $form = $( this );
//if client side validation fails, don't do anything
if( !$form.valid() ) return;
//send your ajax request
$.ajax( {
type: $form.prop( 'method' ),
url: $form.prop( 'action' ),
data: $form.serialize(),
dataType: "json",
traditional: true,
success: function( response ) {
document.body.innerHTML = response;
}
});
});
});

我推荐使用 @Url.Action设置表单操作的 URL。这样路由可以生成您的 URL。

<form action"@Url.Action("Method", "Controller")" method="POST" id="signInForm">
<input type="text" name="form1" />
<input type="text" name="form2" />
<input type="submit" value="Sign in" />
</form>

它稍微高级一些,但我会尝试使用类似 Take Command 的东西管理您的 jQuery Ajax 调用。

免责声明,我是 TakeCommand 项目的贡献者。

关于c# - 在没有 @HTML.Beginform 的情况下发布表单并在 asp.net MVC 中使用 Jquery(ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com