سؤال

ومرحبا هل من الممكن أن يكون لها شكل ASP.NET MVC التي تستخدم الطرق المحددة في Global.asax للنشر قيمها (عن طريق طلب GET)؟ لدي صورة محددة مثل هذا:

<% using (Html.BeginForm("CanviaOpcions","Sat",FormMethod.Get))
    { %>
    <fieldset>
        <legend>Opciones</legend>
        <%= Html.DropDownList("nomSat")%>
        <input type="submit" />
    </fieldset>
<% } %>

ووالطريق التالية في بلدي global.asax:

routes.MapRoute(
    "Canvia Opcions",
    "Sat/{nomSat}",
    new { controller = "Sat", action = "CanviaOpcions" }
    );

وأريد أنه بعد تقديم الاستمارة مع nomSat وجود XXX قيمة الحصول على URL التالي في المتصفح: HTTP: // MACHINENAME / جلس / XXX

هل من الممكن؟

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

المحلول

هل يهتمون كثيرا URL التي انتقل إليها، أو هل لا يهتمون إلا ما URL المقبل يراه المستخدم هو؟

إذا كنت فقط يهتمون URL يرى المستخدم، فإنك لا تحتاج إلى استخدام الأسلوب تحاول.

وماذا يمكن أن تفعله هو أن يكون عمل آخر أن يقرأ في المعلمة "nomsat"، ثم إعادة توجيه إلى عمل آخر له URL كنت ترغب.

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(string nomsat)
    {
        ...
        return RedirectToAction("Detail", new RouteValueDictionary {{"nomsat", nomsat}});
    }

    public ActionResult Detail(string nomsat)
    {
       ...
       return View();
    }

نصائح أخرى

لا، لا يمكنك إضافة إلى المعلمات التوجيه باستخدام نموذج HTML.

ويمكنك محاكاة السلوك مع وظيفة جافا سكريبت على الرغم من. مثل هذا:

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top