استخدام محرك التوجيه على شكل المقدمة في ASP.NET MVC معاينة 4

StackOverflow https://stackoverflow.com/questions/8485

سؤال

أنا باستخدام 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&...&paramn=valuen

فإنه لا علاقة له مع MVC.

بالإضافة إلى أي جزء من الراحة لا URL تنتهك?انها ليست جميلة URL, ولكن من خلال تعريف دقيق من الراحة ، يمكن أن تكون مريحة.بقية لا تحديد معلمات الاستعلام يجب أن يكون في رابط الجزء.و في هذه الحالة, تلك هي معلمات الاستعلام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top