web-dev-qa-db-ja.com

ASP.NET MVC-URLの抽出パラメーター

このようなURLのパラメーターを抽出しようとしています。

/ Administration/Customer/Edit/1

抽出: 1

/ Administration/Product/Edit/18?allowed = true

抽出: 18?allowed = true

/ Administration/Product/Create?allowed = true

抽出:?allowed = true

誰かが助けることができますか?ありがとう!

54
Kim Tranjan

更新

RouteData.Values["id"] + Request.Url.Query

すべての例に一致します


何を達成しようとしているのかは完全には明らかではありません。 MVCは、モデルバインドを通じてURLパラメーターを渡します。

public class CustomerController : Controller {

  public ActionResult Edit(int id) {

    int customerId = id //the id in the URL

    return View();
  }

}


public class ProductController : Controller {

  public ActionResult Edit(int id, bool allowed) { 

    int productId = id; // the id in the URL
    bool isAllowed = allowed  // the ?allowed=true in the URL

    return View();
  }

}

デフォルトの前にglobal.asax.csファイルにルートマッピングを追加すると、/ administration /部分が処理されます。または、MVCエリアを調べることもできます。

routes.MapRoute(
  "Admin", // Route name
  "Administration/{controller}/{action}/{id}", // URL with parameters
  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

それが未加工のURLデータである場合、コントローラーアクションで使用可能なさまざまなURLおよび要求プロパティのいずれかを使用できます。

string url = Request.RawUrl;
string query= Request.Url.Query;
string isAllowed= Request.QueryString["allowed"];

Request.Url.PathAndQueryはあなたが望むものであるように思えます。

生の投稿データにアクセスしたい場合は、使用できます

string isAllowed = Request.Params["allowed"];
string id = RouteData.Values["id"];
89
David Glenn
public ActionResult Index(int id,string value)

この関数はURLから値を取得します。その後、以下の関数を使用できます

Request.RawUrl-現在のページの完全なURLを返す

RouteData.Values-URLの値のコレクションを返す

Request.Params-名前と値のコレクションを返す

7
yogesh lodha

ControllerContext.RoutValuesオブジェクトのこれらのパラメーターリストは、キーと値のペアとして取得できます。

それをいくつかの変数に保存し、その変数をロジックで使用できます。

1
Sameer Joshi

パラメーターの値を取得するには、RouteDataを使用できます。

より多くのコンテキストがいいでしょう。そもそもなぜそれらを「抽出」する必要があるのですか?次のようなアクションが必要です:public ActionResult Edit(int id, bool allowed) {}

0
Jakub Konecki

私はこのメソッドを書きました:

    private string GetUrlParameter(HttpRequestBase request, string parName)
    {
        string result = string.Empty;

        var urlParameters = HttpUtility.ParseQueryString(request.Url.Query);
        if (urlParameters.AllKeys.Contains(parName))
        {
            result = urlParameters.Get(parName);
        }

        return result;
    }

そして、私はこれを次のように呼び出します:

string fooBar = GetUrlParameter(Request, "FooBar");
if (!string.IsNullOrEmpty(fooBar))
{

}