以下链接为以下网址:http://localhost:11111/files/Details/3
@Html.ActionLink("Details", "Details", "mycontroller", new { id = item.id },null)
但是我正在尝试使用类似http://localhost:11111/files/Details?id=3或http://localhost:11111/files/Details.aspx?id=3的url参数
如何获取操作链接以显示类似详细信息的网址?i = 3
这是我的控制器视图:
public ActionResult Details(int? id)
{
...
return View();
}
答案 0 :(得分:1)
可以在我们项目的Global.asax文件中的RegisterRoutes方法下找到路由代码。
我已经在RegisterRoutes方法中看到一个cookie。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults);
使用上面的MapRoute方法,我们定义了一条新路线。
样本;
public class HaberController : Controller
{
public ActionResult Listele()
{
// Listing codes will be written
return View("Listele");
}
public ActionResult Detay(string HaberId)
{
// Detail codes will be written
return View("Detay");
}
}
我们转到我们的Global.asax文件,并如下进行编辑。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"HaberListeleme",
"Haber",
new { controller = "Haber", action = "Listele" }
);
routes.MapRoute(
"HaberDetay",
"Haber/{id}",
new { controller = "Haber", action = "Detay" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
如果我们按以下方式进行路由:
routes.MapRoute(
"HaberDetay",
"Haber/{*Id}",
new { controller = "Haber", action = "Detay" }
);
因此,如果我们通过在参数名称旁边添加*来编写*,则该字符将被发送到Controller中Detail方法的相关参数,无论它在“新闻/网址”标签后的含义是什么。
例如:
如果请求的网址为土耳其/当前/ 34389将作为参数发送。
答案 1 :(得分:0)
为什么要在链接中看到参数名称?
Asp.Net MVC使用用户友好的URL。
如果您已使用MVC模板在Visual Studio中创建了一个项目,则默认情况下,可能会将您的路由配置为在控制器/操作/之后像id一样解释参数。
因此,您的操作中id参数的值将通过模型绑定自动替换为您网址中显示的id号。