我寫了簡單的形式,它具有按鈕的簡單形式。在這個按鈕上用javascript方法onclick應該觸發一個應該去'/ Parser/GetParseData'的ajax。但是我總是得到錯誤而沒有任何細節(總是運行request.fail)。ASP.Net MVC AJAX總是返回錯誤(與路由問題)
我不知道什麼是問題。一般我的目標是從表格和成功後(並獲得答案)數據的火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:控制器:
[HttpPost]
public string GetParseData(IFormHelper formData)
{
return "ANSWER!!!";
}
我還添加了本作路線:
routes.MapRoute(
name: "PostData",
url: "{controller}/{action}",
defaults: new { controller = "Parser", action = "GetParseData"
});
如果您需要更多信息,請告訴我 - 我將編輯此帖子。
已解決。
但我使用IOC容器 - 我的意思是Ninject。即使如此,我必須把強大的典型var? –
did'nt注意到這一點,很好趕:) :) –
是的(除非你是要創建自己的定製ModelBinder) –