簡體   English   中英

將值發布到webapi控制器

[英]Post value to webapi controller

這是我的WebAPi控制器和html表單。 通過myValue將請求正確路由到控制器中的方法始終為null。 我認為這是從一些教程中發布它的有效方法。

控制器:

[Route("add")]
public string Post([FromBody]string  myValue)
{
    return string.Format("HAIAA: [{0}]" , myValue);
}

視圖:

<form id="formOne" method="post" action="ninja/add">
    <input type="text" name="myValue" /> 
    <input type="submit" value="submit" />
</form>

您不能使用HTML表單將簡單類型參數POST到Web API操作。 使用包含參數的復雜類型:

public class MyFormData {
    public string myValue { get; set; }
}

更改控制器簽名:

[Route("add")]
public string Post([FromBody]MyFormData data)
{
    return string.Format("HAIAA: [{0}]" , data.myValue);
}

或者使用AJAX將單個值發布到您的操作:

$('#formOne').submit(function () {
    $.post('ninja/add', { "": $('input[name=myValue]').val() })
        .success(function () {
            //do something
        })
        .error(function () {
            //show error
        });
    return false;
});

使用post參數有一些警告。

這是我找到的最好的資源:

http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/

最有可能的:

// POST api/values
public string Post([FromBody]string value) {
  return value;
}

而這種古怪:

您需要發送的值需要

{ '': value }

這是jquery

$.post('ninja/add', { '': value });

不完全確定如何在你的例子中修復它........但我認為我給你正確的值來嘗試發送。

我曾經遇到過同樣的問題,並且我使用System.Net.Http.Formatting.FormDataCollection ,它接受一個表示作為application-x-www-form-urlencoded發送的數據的對象

嘗試

public string Post(System.Net.Http>formatting.FormDataCollection data)
{
    return string.Format("HAIAA: [{0}]" , data.Get("myValue"));
}

你可以試試這種方式。

[Route("add")]
        public string Post(System.Net.Http.Formatting.FormDataCollection myValue)
        {
            NameValueCollection nvc = form.ReadAsNameValueCollection();
            string value = nvc.Get("myValue");
            return string.Format("HAIAA: [{0}]", value);
        }

暫無
暫無

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

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