我想一定路线地图,以便自动生成的URL看起来
Admin/controller/action/param对于这两个代码块,
@Url.Action("action","controller",new{id="param"})并
@Url.Action("action","controller",new{type="param"})
我所做的是在区域注册中的以下内容,
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index",
id = UrlParameter.Optional },
new string[] { "namespaces" });
context.MapRoute(
"Admin_type",
"Admin/{controller}/{action}/{type}",
new { action = "Index",
type = UrlParameter.Optional },
new string[] { "namespaces" });
Run Code Online (Sandbox Code Playgroud)
当参数名称是id,生成的url是预期的,但是当参数名称是type,而不是controller/action/typevalue,它生成类似的东西controller/action/?type=typevalue
有没有办法生成url类似于controller/action/typevalue保持Admin_default路由器的生成器行为完好无损?
asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas asp.net-mvc-3
我正在设置我的路线与MVC项目,但我对花括号有点困惑...
如果我有...
routes.MapRoute( "Music", "Music/{name}", new { } );
Run Code Online (Sandbox Code Playgroud)
围绕名称的花括号的目的是什么,这是否会传递给某些东西?或者,如果我传递默认对象,这会映射到什么?
我有一个名为Admin的区域.Visual Studio中的文件夹结构如下:
Areas
Admin
Controllers
Views
Run Code Online (Sandbox Code Playgroud)
我有一个名为AccountController的控制器,我在其中有一个名为Verify的Action.我在这个动作中有这行代码:
return View("EmailVerificationComplete");
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
未找到视图"EmailVerificationComplete"或其主页,或者没有视图引擎支持搜索的位置.搜索了以下位置:〜/ Views/Account/EmailVerificationComplete.aspx~/Views/Account/EmailVerificationComplete.ascx~/Views/Shared/EmailVerificationComplete.aspx~/Views/Shared/EmailVerificationComplete.ascx~/Views/Account/EmailVerificationComplete. cshtml~/Views/Account/EmailVerificationComplete.vbhtml~/Views/Shared/EmailVerificationComplete.cshtml~/Views/Shared/EmailVerificationComplete.vbhtml
为什么是这样?为什么MVC不知道相对于Admin区域查看Views文件夹?
我该如何解决这个问题?
谢谢,
萨钦
我的网址路由在"区域"文件夹中正常工作,这意味着我可以从任何一个控制器或视图到另一个,我怎么能从这个区域控制器出来到父控制器?
对于Ex:在我的控制器中,如果我给这条线它是从区域控制器出来并正常工作
//Homecontroller.cs inside Controllers folder
return RedirectToAction("../../Home");
Run Code Online (Sandbox Code Playgroud)
编码出来并连接到父控制器的正确方法是什么?
我需要我的页面名称在名称中有一个破折号.我们的愿景
我是MVC&c#的新手,所以我可能会遇到这一切.
这是我的控制器:
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
//
// GET: /our-vision/
public ActionResult ourVision()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的观点中,我有Views/Home/ourVision.cshtml.
当我编译并去http://localhost/ourVision它工作,但当我去http://localhost/our-vision它不.
这是我的路线:
routes.MapRoute(
"Default", // Route name
"{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud) 我有一个与MVC 4中的Html.Action相关的问题我想将一些Querystring变量传递给Details视图
我现在的代码是
System.Text.StringBuilder MobileData = new System.Text.StringBuilder();
MobileData.AppendFormat("<a style=\"text-align:left;\" data-role=\"button\" onclick=\"window.location='" + @Url.Action("Taken_Detail", new { id = tk.ID }) + "';\" data- ajax=\"true\" data-icon=\"alert\"><span class=\"AgenItems\">{1:dd-MM-yyyy}</span>", tk.ID, tk.Datum);
Run Code Online (Sandbox Code Playgroud)
问题是他会将我重定向到localhost/PROJECTNAME/Home/Taken_Detail/2我想要的是Home/Taken_Detail?id = 2我在这里缺少什么我刚开始学习MVC 4,欢迎提出每个提示.
嘿伙计们我开始玩ASP.NET MVC 5预览,到目前为止一切都很好(我只能推荐它).
但是,我想知道在哪里可以为Built-In [Authorize]-Attribute 设置Login-Url .我搬到了AccountController一个区域,因此该路径登录动作不再/Account/Login,但是MyArea/Account/Login,这是由忽略[Authorize]-Attribute,这反过来又意味着,每当一个导航设置,一个控制器或动作与属性被重定向到错误的路径/Account/Login.
我有这个配置
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "TestRoute",
url: "home/MyTestDrillDown/{productcat}",
defaults: new { controller = "Home", action = "MyTestDrillDown" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
我想将TestRoute配置为
routes.MapRoute(
name: "TestRoute",
url: "home/MyTestDrillDown/{productcat}"
);
Run Code Online (Sandbox Code Playgroud)
但我看到以下错误. 匹配的路由不包含"控制器"路由值,这是必需的.
我的理解是,如果我有一个硬编码的url,那么它直接匹配一个控制器和一个动作,在我的情况下"home/MyTestDrillDown/{productcat}"匹配HomeController和MyTestDrillDown动作.
我确信我缺少一些非常基本和重要的东西,因为存在一个MapRoute方法的重载,它只接受Name和Url作为参数.
谢谢
我想阻止路由处理我的一个控制器,叫做MyController.
我认为这可能有用,但它没有:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{urlId}",
defaults: new { controller = "Home", action = "Index", urlId = UrlParameter.Optional },
constraints: new { controller = @"^(!?MyController)$" }
);
Run Code Online (Sandbox Code Playgroud)
可悲的是,它阻止我导航到我的任何控制器.
如果控制器包含MyController使用,我只能让它不匹配,(!?MyController.*)但这与它不完全匹配.
我尝试过的所有正则表达式测试人员都认为它应该完全 匹配MyController.
我正在尝试通过Route属性为我的一个控制器操作配置以下url结构:
/产品/ 12345-最纯净的绿色的小部件
这是我的路线:
[Route(@"/products/{id:int}-{slug:regex([[\w\-]]+)}")]
public ContentResult Show(int id, string slug)
Run Code Online (Sandbox Code Playgroud)
这与预期的路线不匹配,但确实匹配:
/产品/ 12345,最纯净
并且只要我添加其他任何不匹配的内容,也会在一个单词后面跟一个尾随连字符匹配.
有趣的是,如果我为/换掉字符串文字连字符(而不是正则表达式连字符),它的工作原理很好:
[Route(@"/products/{id:int}/{slug:regex([[\w\-]]+)}")]
public ContentResult Show(int id, string slug)
Run Code Online (Sandbox Code Playgroud)
成功匹配:
/产品/ 12345 /最纯净的绿色的小部件
所以它似乎绊倒了字符串文字连字符.有任何想法吗?