163

MVC 6 コントローラーの Get メソッドに複数のパラメーターを渡すにはどうすればよいですか。たとえば、次のようなものを持てるようにしたいです。

[Route("api/[controller]")]
public class PersonController : Controller
{
    public string Get(int id)
    {
    }

    public string Get(string firstName, string lastName)
    {

    }

    public string Get(string firstName, string lastName, string address)
    {

    }
}

だから私はのようにクエリすることができます。

api/person?id=1
api/person?firstName=john&lastName=doe
api/person?firstName=john&lastName=doe&address=streetA
4

14 に答える 14

133

これを使用することもできます:

// GET api/user/firstname/lastname/address
[HttpGet("{firstName}/{lastName}/{address}")]
public string GetQuery(string id, string firstName, string lastName, string address)
{
    return $"{firstName}:{lastName}:{address}";
}

:おそらくより良いアプローチについては、metalheartおよびからの回答を参照してください。Mark Hughes

于 2016-12-05T10:05:32.800 に答える
91

コントローラーアクションを 1 つだけ使用しないのはなぜですか?

public string Get(int? id, string firstName, string lastName, string address)
{
   if (id.HasValue)
      GetById(id);
   else if (string.IsNullOrEmpty(address))
      GetByName(firstName, lastName);
   else
      GetByNameAddress(firstName, lastName, address);
}

もう 1 つのオプションは、属性ルーティングを使用することですが、別の URL 形式が必要になります。

//api/person/byId?id=1
[HttpGet("byId")] 
public string Get(int id)
{
}

//api/person/byName?firstName=a&lastName=b
[HttpGet("byName")]
public string Get(string firstName, string lastName, string address)
{
}
于 2016-03-30T06:04:53.893 に答える
63

URL から検索パラメーターを解析するには、コントローラー メソッドのパラメーターに で注釈を付ける必要があります。[FromQuery]次に例を示します。

[Route("api/person")]
public class PersonController : Controller
{
    [HttpGet]
    public string GetById([FromQuery]int id)
    {

    }

    [HttpGet]
    public string GetByName([FromQuery]string firstName, [FromQuery]string lastName)
    {

    }

    [HttpGet]
    public string GetByNameAndAddress([FromQuery]string firstName, [FromQuery]string lastName, [FromQuery]string address)
    {

    }
}
于 2016-03-29T14:29:23.857 に答える
3

これは私のために働いています

[HttpGet("{data}/{whereList}")]
    public JsonResult GetFieldsData([FromQuery]  string data, [FromQuery]  string whereList)
于 2021-03-18T13:08:13.693 に答える
2

ここに画像の説明を入力

NB-FromURI を削除しました。それでも、URL から値を渡して結果を取得できます。fromuri を使用した利点を知っている人がいれば教えてください

于 2017-03-27T08:46:34.150 に答える
0

もしよろしければ、私は自分で答えたいです(私は.NET 5 + Reactを使用しています)

コントローラ:

namespace MyProject.Controllers
{
    [Route("[controller]")]
    public class ExampleController : Controller
    {
        public string Get(string param1, string param2, string param3)
        {
            //your code here
        }
    }
}

JS(反応):

fetch(`example?param1=${val1}&param2=${val2}&param3=${val3}`)
于 2021-05-19T14:08:11.703 に答える