1

url.action является:как удалить параметры строки запроса в URL в mvc4 с RazeR использованием url.action

<li><a href="@Url.Action("CategoryLevel", "Product", new { CategoryId = @item._categoryId, ProductName = @Html.Raw(item._categoryName) })">@Html.Raw(item._categoryName)</a></li> 

он работает нормально, но я не хочу, чтобы отобразить строку qyery в URL

URL является:

http://localhost:99/Product/CategoryLevel?CategoryId=16&ProductName=Common%20Conditions

i want to display this as 


`http://localhost:99/Product/CategoryLevel/16/Common%20Conditions` (or)`http://localhost:99/Product/CategoryLevel/Common%20Conditions(or)http://localhost:99/Product/Common%20Conditions` 

маршрут конфигурации составляет: routes.MapRoute( name: "Home", url: "{controller}/{action}", defaults: new { controller = "Home", action = "Index" } );

ActionResult в контроллере: `

public ActionResult CategoryLevel() 
     { 
      string ProductName = Request.QueryString["ProductName"]; 
      ViewBag.ProductName = ProductName; 
      int Category = Convert.ToInt32(Request.QueryString["CategoryId"]); 
      ViewBag.ParentCategoryId = Category; 
      int ParentCategoryId = 0; 
      if (Request.QueryString["ParentCategoryId"] != null) 
      { 
       ParentCategoryId = Convert.ToInt32(Request.QueryString["ParentCategoryId"]); 
      } 
      Product productInstance = new Product(); 
      IList<CategoryInfo> categories = new List<CategoryInfo>(); 
      categories = productInstance.GetCategories(Category, true); 
      if (categories.Count == 0) 
      { 
       return RedirectToAction("NewProducts", "Product", new { @CategoryId = Category, ProductName = ProductName }); 
      } 

      return View(categories); 

     }`another actionresult is`public ActionResult NewProducts(Product instance) 
     { 
      string ProductName = Request.QueryString["ProductName"]; 
      instance.BrandName = ProductName; 
      int CategoryId = Convert.ToInt32(Request.QueryString["CategoryId"]); 
      int BrandId = Convert.ToInt32(Request.QueryString["BrandId"]); 
      string SortBy = Convert.ToString(Request.QueryString["sortBy"]); 
      if (SortBy != null) 
      { 
       Session["Sort"] = SortBy; 
      } 
      Session["NewProductsBrandId"] = BrandId; 
      instance.CategoryId = CategoryId; 
      instance.BrandId = BrandId; 
      instance.SortBy = SortBy; 
      return View(instance); 
     }` 
+1

возможный дубликат [ASP.NET MVC Удалить строку запроса в методе действий] (http://stackoverflow.com/questions/9672843/asp-net-mvc-remove-query-string-in-action-method) – SivaRajini

+0

http: //stackoverflow.com/questions/9672843/asp-net-mvc-remove-query-string-in-action-method – SivaRajini

ответ

0

Попробуйте, как это,

Использование Html.ActionLink вместо a

@Html.ActionLink("EditUser", "CategoryLevel", "Product", new { Id = m.ID }, new { @class = "hide" }) 

Или

<a href='CategoryLevel/@m.ID/@m.Name' >@m.Name</a> 
+0

также генерирует ссылку с строкой запроса правильно? – SivaRajini

+0

@SivaRajini Нет, он генерирует запрос, подобный этому. Http: // localhost: 53897/Test/DYmanicControllerPage/2' – Jaimin

+0

он генерирует URL-адрес, как ожидается, но он не будет перенаправлен на следующую страницу @ Jaimin – user3166404

1

Здесь идет описательный решение -

Прежде всего, необходимо иметь надлежащий маршрут -

routes.MapRoute(
    name: "ProductDetails", 
    url: "{controller}/{action}/{categoryid}/{productname}", 
    defaults: new { controller = "Product", action = "CategoryLevel" } 
); 

Тогда вы можете иметь действие контроллера, определенный таким образом.

public class ProductController : Controller 
{ 
    public ActionResult CategoryLevel(string CategoryId, string ProductName) 
    { 
     return View(); 
    } 
} 

Наконец, ссылка на этом пути -

@Html.ActionLink("sample","CategoryLevel", "Product", new { CategoryId = 1, ProductName = "Rami Vemula" }, null) 

URL генерируется - http://localhost:5738/Product/CategoryLevel/1/Rami%20Vemula

И когда вы нажмете на ссылку, вы получите значения, как показано ниже -

enter image description here

+0

URL переписан, но он не будет перенаправлен на следующую страницу – user3166404