كيفية الحصول على Html.BeginForm للوصول الى الصحيح MVC الطريق

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

  •  07-07-2019
  •  | 
  •  

سؤال

في بلدي ASP.NET MVC التطبيق لدي التالية على حقل الإدخال:

<% using (Html.BeginForm("Search", "Products", FormMethod.Get) { %>
   <input type="text" name="searchQuery" id="searchQuery" />
<% } %

أريد أن أذهب إلى المسار:

routes.MapRoute("ProductSearchRoute", 
    "Products/Search/{searchQuery}/{pageNumber}", 
new { controller = "Products", action = "Search", pageNumber = 1 });

المشكلة هي أنه يذهب إلى /منتجات سلسلة الاستعلام ، على سبيل المثالالمنتجات ؟ searchQuery=Motoroil.كيف يمكنني الحصول عليه إلى استخدام ProductSearchRoute وبدلا من ذلك شكل /المنتجات/بحث/Motoroil ?

هل كانت مفيدة؟

المحلول

إذا كنت فهمت بشكل صحيح، كنت في محاولة لتغيير موقع حيوي المشاركات النموذج ل، استنادا إلى مدخلات النموذج؟

وستحتاج إلى استخدام جافا سكريبت لهذا، لتغيير السمة الهدف للنموذج. وBeginForm () هو لتقديم العلامة النموذج، والتي من وجهة نظر أتش تي أم أل، غير ثابت.

نصائح أخرى

ويمكنك أن تحاول:

<% using (Html.BeginRouteForm("ProductSearchRoute", FormMethod.Get)) %>

واللطف،

ودان

public ActionResult SearchQuery (string searchQuery)
{
    return RedirectToAction (searchQuery, "/Products/Search" );
}

public ActionResult Search (string searchQuery)
{
    return View();
}

كما @دانيال إليوت اقترح استخدام BeginRouteForm.الحصول على عنوان URL الخاص بك لتوليد بشكل صحيح, يجب عليك تعيين routevalues مع نفس الاسم المحدد في جدول التوجيه.

@using (Html.BeginRouteForm("ProductSearchRoute", new { searchQuery= "my query", pageNumber = 1 })
{

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