Vra

Ek is met behulp van ASP.NET MVC Voorbeeld 4 en wil om te weet hoe om te gebruik die routing enjin vorm vir voorleggings.

Byvoorbeeld, ek het'n roete soos hierdie:

routes.MapRoute(
            "TestController-TestAction",
            "TestController.mvc/TestAction/{paramName}",
            new { controller = "TestController", action = "TestAction", id = "TestTopic" }
            );

En'n verklaring vorm wat lyk soos hierdie:

<% using (Html.Form("TestController", "TestAction", FormMethod.Get))
   { %>
     <input type="text" name="paramName" />
     <input type="submit" />
<% } %>

wat maak om te:

<form method="get" action="/TestController.mvc/TestAction">
  <input type="text" name="paramName" />
  <input type="submit" />
</form>

Die gevolglike URL van'n vorm voorlegging is:

localhost/TestController.mvc/TestAction?paramName=value

Is daar enige manier om hierdie vorm voorlegging roete na die gewenste URL van:

localhost/TestController.mvc/TestAction/value

Die enigste oplossings wat ek kan dink is om te skep van'n afsonderlike aksie wat net gaan die versoek parameters, of om te gebruik Javascript.

Was dit nuttig?

Oplossing

Oplossing:

public ActionResult TestAction(string paramName)
{
    if (!String.IsNullOrEmpty(Request["paramName"]))
    {
        return RedirectToAction("TestAction", new { paramName = Request["paramName"]});
    }
    /* ... */
}

Ander wenke

In jou roete, ontslae te raak van die {paramName} deel van die URL. Dit moet wees:

TestController.mvc / TestAction

As dit is die URL wat jy versoek om die roete te wil. Jou vorm sal dan plaas om die URL. Gepos vorm waardes gekarteer om parameters van 'n aksie metode outomaties, so moenie bekommerd wees oor sonder dat data geslaag om jou aksie metode.

My begrip is dat dit is hoe die HTML-werke.As jy dit doen'n <form url="foo" method="get"> en pos die vorm, dan is die vorm sal post cat?

param1=value1&...&paramn=valuen

Dit het niks te doen met MVC.

Buitendien, wat deel van die RES is dat die URL oortree?Dit is nie'n mooi URL, maar deur die streng definisie van die RES, dit kan wees Rustig.RUS nie spesifiseer dat die navraag parameters het om te wees in'n URL segment.En in hierdie geval, dit is soektog parameters.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top