我是MVC的新手。我在这里提出的问题可能非常基础。但是如果没有解决这个问题,我就无法跨越学习的道路。
我有一个简单的控制器和两个视图。我的要求是最初将加载一个视图,然后在按钮上单击,这将被加载到另一个视图中。由于我不知道如何在不使用ajax提交的情况下从视图发布到控制器,我尝试了它并且它有效。但最后,它重定向到第二个视图,但后来显示了ajax失败警报。无法确定哪里出错了。下面给出了代码。
控制器。
public class DashboardController : Controller
{
//
// GET: /Dashboard/
[HttpPost]
public ActionResult LoginResult()
{
string strName = Request["username"].ToString();
return View("Validateresult");
}
public ActionResult Index()
{
return View();
}
}
视图1
@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>
视图2
@{
ViewBag.Title = "Validateresult";
}
<h2>Validateresult</h2>
模型
public class Employee
{
public string username { get; set; }
public string age { get; set; }
}
有人可以建议更好的解决方案来向控制器和其他视图提交视图或如何解决此问题吗?
答案 0 :(得分:1)
下面&#39;一个简单的例子。第一视图测试负载。单击提交回复到您的控制器与模型,然后重定向到查看Test2。
public class TestController : Controller
{
//
// GET: /Test/
[HttpGet]
public ActionResult Test()
{
var model = new CurrentViewModel();
return View("Test", model);
}
[HttpGet]
public ActionResult Test2()
{
var model = new CurrentViewModel();
return View("Test2", model);
}
[HttpPost]
public ActionResult TestPost(CurrentViewModel model)
{
return RedirectToAction("Test2");
}
}
使用提交按钮测试视图。
@using (Html.BeginForm("TestPost", "Test", FormMethod.Post))
{
<button type="submit">Submit</button>
}