重定向到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吗?我只是想传递信息的形式(在对话框中)到一个控制器

重定向到Jquery中的动作控制器MVC 4

好的,试着用

代替你的<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";