[英]ASP.Net MVC ajax always return error (issues with routing)
我写了一个简单的表单,它有简单的表单和按钮。 使用此按钮上的javascript方法onclick应该触发ajax,它应该转到'/ Parser / GetParseData'。 但是我总是在没有任何细节的情况下得到错误(总是运行request.fail)。
我不知道是什么问题。 一般我的目标是使用来自表单的数据和成功之后获取ajax(并获得答案)我想将收到的字符串放在$('#result')中。
你可以帮帮我吗?
好的我的观点:
@using Project.Domain.Entities
@model ParserHelper
@{
ViewBag.Title = "Project";
}
<h2>simple form asp.net mvc 5</h2><br/>
@using (Html.BeginForm())
{
<fieldset>
<div class="editor-field">
@Html.TextAreaFor(Model => Model.InputData)
</div>
<div class="radio-field">
@Html.RadioButtonFor(Model => Model.TypeOfResult, "xml") @Html.Label("Xml") <br/>
@Html.RadioButtonFor(Model => Model.TypeOfResult, "csv") @Html.Label("Csv")
</div>
<button onclick="submitTest()">Request!</button>
</fieldset>
}
<div id="result">
</div>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
function submitAlert() {
alert("testtest");
}
function submitTest() {
event.preventDefault();
var data = {
InputData: $('#InputData').val(),
TypeOfResult: $('#TypeOfResult').val()
};
request = $.ajax({
url: "/Parser/GetParseData",
type: "post",
formData: data
});
request.done(function (response, textStatus, jqXHR) {
alert("Hooray, it worked!");
$('#result').text('Its worked:' + response);
});
request.fail(function (jqXHR, textStatus, errorThrown) {
alert(
"The following error occurred: " +
textStatus, errorThrown
);
$('#result').text('Sorry, error');
});
}
</script>
我的模型是:
public class ParserHelper : IFormHelper
{
public string ResultAfterParse { get; set; }
public string InputData { get; set; }
public string TypeOfResult { get; set; }
}
最后这是我的控制器方法:ParserController:Controller:
[HttpPost]
public string GetParseData(IFormHelper formData)
{
return "ANSWER!!!";
}
我还将其添加为路由:
routes.MapRoute(
name: "PostData",
url: "{controller}/{action}",
defaults: new { controller = "Parser", action = "GetParseData"
});
如果您需要更多信息,请告诉我 - 我将编辑此帖子。
解决了。
您的POST方法签名需要
public string GetParseData(ParserHelper formData)
您不能将interface
用作参数。 DefaultModelBinder
使用Activator.CreateInstance()
初始化对象,并且无法初始化interface
,只能初始化其具体类型。
如果错误是404未找到 ,则问题可能是URL不正确,因为URL的硬编码主要是因为客户端代码被移动到单独的js文件,该文件驻留在某些子文件夹中,在这种情况下路径URL变为无效,您应该使用Url.Action
方法生成正确的URL,如:
url: '@Url.Action("GetParseData","Parser")'
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.