重定向到Jquery中的动作控制器MVC 4
本文关键字:控制器 MVC Jquery 重定向 | 更新日期: 2023-09-27 18:12:45
我需要一点帮助,因为我对AJAX非常陌生。在给定的页面,我有(视图)我显示一个按钮,它带来了一个表单。我最终想要的是将该表单中的数据输入传递给应用程序中的控制器。我知道有很多关于如何做的教程……然而,我似乎有一个问题理解这是如何做到的;因此,我想一步一步地遍历这个过程。我只是想在用户点击对话框上的"保存"按钮后显示不同的视图。我希望这是清楚的。这是我的HTML + jQuery
@model AccommodationEditViewModel
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<table>
<tr>
<td>
@Html.ActionLink("Back to list", "List", "Accommodation")
</td>
</tr>
<tr>
<td>
@if ( Model.Accommodation.LocaleID != Guid.Empty)
{
@Html.DisplayAccommodation(IAccommodationDisplay);
}
</td>
</tr>
</table>
<div class="genericform">
<form id="form" method="post">
@Html.AccommodationEditDisplay()
<table>
<tr>
<td>
@Html.ActionLink("Add New Address", "", "", new { id = "addaddresses" }, null)
</td>
</tr>
@if (Model != null && Model.Accommodation.Addresses.Count() == 0)
{
<tr>
<td>
This Locale Contains No Addresses
</td>
</tr>
}
else
{
foreach (Address address in Model.Accommodation.Addresses)
{
<tr>
<td>
@address.Address1
</td>
</tr>
}
}
</table>
<br /> <br />
<input type="submit" name="command" value="Save" />
<input type="submit" name="command" value="Delete" />
</form>
</div>
<button id="opener">Add Address</button>
<div id="dialog" title="Add Address" style="display:none;">
<label for="Address1">Address: </label><input id="Address1" />
<label for="Address2">Address 2: </label><input id="Address2" />
<label for="City">City: </label><input id="City" />
<label for="State">State: </label><input id="State" />
<label for="PostalCode">Postal Code: </label><input id="PostalCode" />
</div>
<script type="text/javascript" src="~/Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript" src="~/Scripts/jquery-ui-1.8.20.js"></script>
<link type="text/css" href="~/Content/themes/base/jquery.ui.all.css" rel="stylesheet" />
<script type="text/javascript">
$(document).ready(function () {
$("#dialog").dialog({
autoOpen: false,
show: {
effect: "explode",
duration: 250
},
hide: {
effect: "explode",
duration: 250
},
buttons: {
"Save": {
text: "Save",
class: "",
click: function () {
//**redirect here**
$(this).dialog("close");
}},
"Cancel": {
text: "Cancel",
class: "",
click: function () {
$(this).dialog("close");
}
}},
modal: true
});
$("#opener").click(function () {
$("#dialog").dialog("open");
});
});
</script>
我已经尝试使用$.ajax({})并设置此:Url: "/Areas/Website/Controller/Action
但是此时脚本就停止工作了。任何和所有的帮助是感激的!谢谢你!
编辑
我甚至需要使用AJAX吗?我只是想传递信息的形式(在对话框中)到一个控制器
好的,试着用
代替你的<form id="form" method="post"> form fields </form>
@using (Html.BeginForm("NameOfControllerMethod", "NameOfControllerClass"))
{
<!-- fields for gathering data, your input fields essentially -->
}
然后你需要去你的控制器类,并在你的控制器方法上面添加[HttpPost],像这样:
[HttpPost]
public ActionResult MethodName(AccomodationEditViewModel viewModel) {
//do stuff in here with the viewModel, for example viewModel.Location, or viewModel.Name
}
注意 [HttpPost]要求你在你的控制器类的顶部添加一个新的"using"插入。
NameOfControllerMethod是上面有HttpPost的方法。控制器类的名称类似于"MyClass",例如来自名为MyClassController的控制器
试试这个:
window.location = "/Areas/Website/Controller/Action";