ボタンで簡単なフォームを持つシンプルなフォームを作成しました。このボタンのjavascriptメソッドを使用してOnclickを実行すると、 '/ Parser/GetParseData'に移動するajaxが起動されます。しかし、私はいつも細かいことなくエラーになっています(常にrequest.failを実行します)。ASP.Net MVC ajaxは常にエラーを返す(ルーティングの問題)
問題は何か分かりません。一般的な私の目標は、フォームからのデータを使ってファイア・アヤックスであり、成功した後(答えを得る)に受け取った文字列を$( '#result')に入れたいと思います。
お手伝いできますか?
[OK]を私のビュー:
@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>
私のモデルは次のとおりです。ParserController::コントローラー:
[HttpPost]
public string GetParseData(IFormHelper formData)
{
return "ANSWER!!!";
}
私もこれを追加
public class ParserHelper : IFormHelper
{
public string ResultAfterParse { get; set; }
public string InputData { get; set; }
public string TypeOfResult { get; set; }
}
最後に、ここでは、中に私のコントローラメトがありますルーティング:
routes.MapRoute(
name: "PostData",
url: "{controller}/{action}",
defaults: new { controller = "Parser", action = "GetParseData"
});
これ以上の情報が必要な場合は、私に知らせてください - この投稿を編集します。
解決済み。
しかし、私はIOCコンテナを使用しています - 私はNinjectを意味します。それでも私は強く縛られたvarを入れなければならない? –
did'nt notice that bit、good catch :) –
はい(あなた自身のカスタムModelBinderを作成しない限り) –