このようなURLのパラメーターを抽出しようとしています。
/ Administration/Customer/Edit/1
/ Administration/Product/Edit/18?allowed = true
/ Administration/Product/Create?allowed = true
誰かが助けることができますか?ありがとう!
更新
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"];
public ActionResult Index(int id,string value)
この関数はURLから値を取得します。その後、以下の関数を使用できます
Request.RawUrl
-現在のページの完全なURLを返す
RouteData.Values
-URLの値のコレクションを返す
Request.Params
-名前と値のコレクションを返す
ControllerContext.RoutValuesオブジェクトのこれらのパラメーターリストは、キーと値のペアとして取得できます。
それをいくつかの変数に保存し、その変数をロジックで使用できます。
パラメーターの値を取得するには、RouteDataを使用できます。
より多くのコンテキストがいいでしょう。そもそもなぜそれらを「抽出」する必要があるのですか?次のようなアクションが必要です:public ActionResult Edit(int id, bool allowed) {}
私はこのメソッドを書きました:
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))
{
}