簡體   English   中英

當使用jQuery單擊菜單時,從_Layout.cshtml打開MVC視圖

[英]Open MVC View from _Layout.cshtml when Menu is clicked using jQuery

我是MVC的新手,正在嘗試構建場景。

  1. _Layout.cshtml
  2. ABC控制器
  3. ABC \\ Index.cshtml

_Layout.cshtml中沒有幾個菜單項。 當我單擊菜單項時,它應調用ABCController的Index方法,並且應為ABC \\ Index.html。 我正在嘗試使用jQuery Ajax的get / post方法來實現這一點。 控制器的方法被調用,但視圖未打開。 我不確定為什么沒有打開它。 但是,當我在菜單項中直接輸入@ Html.ActionLink時,將打開視圖。 我的要求是,我應該能夠編寫javascript以從_Layout.cshtml打開視圖。 我也嘗試了$ .get,它不起作用。 有人可以幫幫我嗎。

我的代碼:

Javascript:

$("body").on("click", "#aMyLink", function () {
var navURL;
navURL = "/ABC/Index";

$.ajax({
    url: navURL,
    data: {},
    type: 'POST',
    error: function (jqXHR) {
        alert('error occurred - ' + jqXHR.status);
    },
    success: function (data) {

    }
})

});

我認為這違反了ajax的目的,因為ajax請求的目的是避免執行整個頁面周期。 但是,可以通過在成功調用后重定向到頁面來完成。

$("body").on("click", "#aMyLink", function () {
    var navURL;
    navURL = "/ABC/Index";

    $.ajax({
        url: navURL,
        data: {},
        type: 'POST',
        error: function (jqXHR) {
            alert('error occurred - ' + jqXHR.status);
        },
        success: function (data) { 
            window.location = navURL;
        }
    });
});
$("body").on("click", "#aMyLink", function () {
    var navURL;
    navURL = "/ABC/Index";
    window.location=navURL;
});

注意我可能不會對此URL進行硬編碼,並將其作為數據元素放入標記中,然后使用它。

<div id="links">
    <ul>
        <li><a class="mylink" data-url='@Url.Action("someaction", "somecontroller", new { id = "123" })'>My Link</a>
        </li>
        <li><a class="mylink" data-url='@Url.Action("someotheraction", "somecontroller", new { id = "123" })'>My Link</a>
        </li>
    </ul>
</div>

然后將代碼更改為:

$("#links").on("click", ".mylink", function () {
    window.location=$(this).data("url");;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM