簡體   English   中英

如何將字符串從視圖傳遞到 mvc 中的控制器

[英]How to pass string from a View to a controller in mvc

此 JavaScript 代碼用於將字符串從視圖傳遞到控制器中的操作:

<script type="text/javascript">
    $(document).on('click', 'a', function () {
        $.ajax({
            type: 'POST',
            url: '/brandsOfACategory',
            contentType: 'application/json; charset:utf-8',
            data: JSON.stringify(this.id)
        })
    });
</script>

控制器中的brandOfACategory 代碼:

public ActionResult brandsOfACategory(string id)
    {
        return View();
    }

代碼未按預期工作,因為 id 為空。

有人可以指導嗎?

$.ajax({
  type: 'POST',
  url: '/brandsOfACategory',
  contentType: 'application/json; charset:utf-8',
  data: { 'id': id }
})

阿賈克斯代碼

$.ajax({
    url: "controllerurl",
    type: "POST",
    data: {
        id: "123"
    },
    dataType: "json",
    success: function(result) {
        //Write your code here
    }
});

有關 ajax鏈接的更多信息

ASP.Net 鏈接中的參數綁定

使用您當前的代碼,在進行 ajax 調用時,請求負載只有一個字符串值。 例如,如果您單擊的鏈接具有Id屬性值“link1”,它將發送以下字符串作為您的 ajax 調用的請求負載。(如果您打開開發工具->網絡選項卡,您可以看到這一點)

"link1"

為了使模型綁定起作用,有效負載應具有鍵值格式,以便將值映射到與鍵具有相同值的參數。

由於它是一個簡單的值,因此您不必將 JSON 字符串化版本和contentType作為application/json 只需將 JS 對象作為data發送。 確保您發送的 JavaScript 對象的鍵/屬性名稱與您的操作方法參數名稱( id )相同,並且它會起作用。

假設您的錨標記具有有效的Id屬性值,以便this.id表達式返回有效的字符串值。

<a href="/SomeUrl" id="myId">MyLink</a>

在腳本中,您可能還想停止正常的點擊行為,以防止頁面導航到 href 屬性值。

$(document).on('click', 'a', function (e) {
    e.preventDefault();

    $.ajax({
        type: 'POST',
        url: '/brandsOfACategory',
        data: { id :this.id } 
    }).done(function (res) {
        console.log('result from ajax call',res);
    })
});

這將發送像id=myId這樣的值作為請求的表單數據。 由於您沒有明確指定 contentType,它將使用默認的application/x-www-form-urlencoded

如果用戶點擊的鏈接沒有Id屬性,代碼將不會發送任何值,因為this.id將返回一個空字符串並且您在服務器端的參數值為 null。

暫無
暫無

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

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