私はMVCの初心者です。ここで質問している質問は非常に基本的なものかもしれません。しかし、私は学習の道を渡ることができなかったことを解決することなく。ビューからコントローラにサブミットするとエラーメッセージが返される
私は単純なコントローラと2つのビューを持っています。私の要件は最初はビューがロードされ、ボタンをクリックすると、別のビューにロードされます。私は、ajaxを使用せずにビューからコントローラに投稿する方法を知らないので、私はそれを試み、それが動作します。しかし最後には、2番目のビューにリダイレクトされていますが、後でajaxの失敗アラートが表示されます。正確にどこが間違っているのかを特定できませんでした。下にコードがあります。
コントローラ。
public class DashboardController : Controller
{
//
// GET: /Dashboard/
[HttpPost]
public ActionResult LoginResult()
{
string strName = Request["username"].ToString();
return View("Validateresult");
}
public ActionResult Index()
{
return View();
}
}
View1を
@model MvcApplication5.Models.Employee
@{
ViewBag.Title = "Dashboard";
}
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<h2>Dashboard</h2>
@using (Html.BeginForm("LoginResult", "Dashboard", FormMethod.Post))
{
@Html.EditorFor(model =>model.username)
<button type="button" id="ajax_method">submit Via AJAX</button>
}
<script>
$(function() {
$('#ajax_method').click(function (e) {
e.preventDefault();
var postData = {
username: $("#username").val()
};
$.ajax({
type: "POST",
url: "/Dashboard/LoginResult", //Your Action name in the DropDownListConstroller.cs
data: { username: $('#username').val() }, //Parameter in this function, Is case sensitive and also type must be string
dataType: "json"
}).done(function (data) {
//Successfully pass to server and get response
if (data.result = "OK") {
window.location.href = "Validateresult";
alert("submit successfully.");
}
}).fail(function (response) {
if (response.status != 0) {
alert(1);
alert(response.status + " " + response.statusText);
}
});
});
});
</script>
VIEW2
@{
ViewBag.Title = "Validateresult";
}
<h2>Validateresult</h2>
モデル
public class Employee
{
public string username { get; set; }
public string age { get; set; }
}
誰かがどのようにコントローラに、別のビューまたはにビューを提出するよう、よりよい解決策を提案することができますこの問題を解決するには?
ボタンを「submit」に変更します。これは下のajaxポストなしであなたのフォームをあなたのコントローラに投稿します。 – Wheels73
送信ボタンとして ''を使用してビューを返す場合は、単純なPOSTを使用してください.AJAXは、モデルを使ってページ全体を再読み込みする必要がない部分ビューをレンダリングする方が適切です。 –
@山本哲也普通の投稿はどういう意味ですか? –