استخدام محرك التوجيه على شكل المقدمة في ASP.NET MVC معاينة 4
-
08-06-2019 - |
سؤال
أنا باستخدام ASP.NET MVC معاينة 4 و أود أن أعرف كيفية استخدام محرك التوجيه على شكل المقدمة.
على سبيل المثال ، يجب توجيه مثل هذا:
routes.MapRoute(
"TestController-TestAction",
"TestController.mvc/TestAction/{paramName}",
new { controller = "TestController", action = "TestAction", id = "TestTopic" }
);
و شكل الإعلان الذي يبدو مثل هذا:
<% using (Html.Form("TestController", "TestAction", FormMethod.Get))
{ %>
<input type="text" name="paramName" />
<input type="submit" />
<% } %>
مما يجعل إلى:
<form method="get" action="/TestController.mvc/TestAction">
<input type="text" name="paramName" />
<input type="submit" />
</form>
مما أدى URL تقديم النموذج هو:
localhost/TestController.mvc/TestAction?paramName=value
هل هناك أي طريقة أن يكون هذا النموذج تقديم توجيه إلى URL المطلوب من:
localhost/TestController.mvc/TestAction/value
الحلول الوحيدة أستطيع أن أفكر في إنشاء منفصلة عمل ذلك فقط يتحقق طلب المعلمات ، أو استخدام جافا سكريبت.
المحلول
الحل:
public ActionResult TestAction(string paramName)
{
if (!String.IsNullOrEmpty(Request["paramName"]))
{
return RedirectToAction("TestAction", new { paramName = Request["paramName"]});
}
/* ... */
}
نصائح أخرى
في المسار الخاص بك ، التخلص من {paramName} جزء من URL.ينبغي أن يكون:
TestController.mvc/TestAction
كما أن عنوان URL الذي تريد الطلب إلى الطريق.النموذج الخاص بك وسوف ثم آخر إلى عنوان URL هذا.نشرت شكل قيم يتم تعيين المعلمات من طريقة عمل تلقائيا, لذلك لا تقلق بشأن عدم وجود تلك البيانات التي تم تمريرها إلى العمل الخاص بك طريقة.
ما أفهمه هو أن هذا هو كيف HTML يعمل.إذا كنت تفعل <form url="foo" method="get">
و بعد شكل ، ثم شكل بعد فو?
param1=value1&...¶mn=valuen
فإنه لا علاقة له مع MVC.
بالإضافة إلى أي جزء من الراحة لا URL تنتهك?انها ليست جميلة URL, ولكن من خلال تعريف دقيق من الراحة ، يمكن أن تكون مريحة.بقية لا تحديد معلمات الاستعلام يجب أن يكون في رابط الجزء.و في هذه الحالة, تلك هي معلمات الاستعلام.