标签: asp.net-mvc-routing

是否可以基于子域创建ASP.NET MVC路由?

是否可以使用ASP.NET MVC路由使用子域信息来确定其路由?例如:

  • user1 .domain.com去了一个地方
  • user2 .domain.com转到另一个?

或者,我可以这样做,所以这两个都与username参数进入相同的控制器/动作?

asp.net-mvc routing asp.net-mvc-routing

233
推荐指数
3
解决办法
7万
查看次数

确保HttpConfiguration.EnsureInitialized()

我安装了Visual Studio 2013,当我运行我的应用程序时,我收到以下错误.

我不知道我要在哪里初始化这个对象.

该怎么办?

    Server Error in '/' Application.

The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc-routing

139
推荐指数
8
解决办法
7万
查看次数

ASP.NET MVC模糊的动作方法

我有两个冲突的动作方法.基本上,我希望能够使用两个不同的路径来获取相同的视图,可以是项目的ID,也可以是项目的名称及其父项(项目可以在不同的父项中具有相同的名称).搜索项可用于过滤列表.

例如...

Items/{action}/ParentName/ItemName
Items/{action}/1234-4321-1234-4321
Run Code Online (Sandbox Code Playgroud)

这是我的行动方法(还有Remove行动方法)......

// Method #1
public ActionResult Assign(string parentName, string itemName) { 
    // Logic to retrieve item's ID here...
    string itemId = ...;
    return RedirectToAction("Assign", "Items", new { itemId });
}

// Method #2
public ActionResult Assign(string itemId, string searchTerm, int? page) { ... }
Run Code Online (Sandbox Code Playgroud)

以下是路线......

routes.MapRoute("AssignRemove",
                "Items/{action}/{itemId}",
                new { controller = "Items" }
                );

routes.MapRoute("AssignRemovePretty",
                "Items/{action}/{parentName}/{itemName}",
                new { controller = "Items" }
                );
Run Code Online (Sandbox Code Playgroud)

我理解为什么错误发生,因为page参数可以为null,但我无法找出解决它的最佳方法.我的设计开始时很差吗?我已经考虑过扩展Method #1签名以包含搜索参数并将逻辑Method #2移到他们都会调用的私有方法中,但我不相信这会真正解决这种模糊性.

任何帮助将不胜感激.


实际解决方案 …

c# asp.net-mvc asp.net-mvc-routing

131
推荐指数
3
解决办法
6万
查看次数

自定义ASP.NET MVC 404错误页面的路由

当有人键入不调用ASP.NET MVC中的有效操作或控制器的URL而不显示通用的"未找到资源"ASP.NET错误时,我试图创建自定义HTTP 404错误页面.

我不想使用web.config来处理这个问题.

是否有任何类型的路由魔法可以捕获任何无效的URL?

更新:我尝试了给出的答案,但我仍然得到丑陋的"资源未找到"消息.

另一个更新:好的,显然RC1中发生了一些变化.我甚至尝试过专门捕获404 HttpException,它仍然只是给了我"资源未找到"页面.

我甚至使用过MvcContrib的资源功能,没有 - 同样的问题.有任何想法吗?

asp.net asp.net-mvc custom-error-pages asp.net-mvc-routing http-status-code-404

116
推荐指数
7
解决办法
15万
查看次数

在Asp.Net MVC中设置"Homepage"

在asp.net MVC中,"主页"(即击中www.foo.com时显示的路线)设置为Home/Index.

  • 这个值存储在哪里?
  • 如何更改"主页"?
  • 是否有比在家庭控制器的Index操作中使用RedirectToRoute()更优雅的东西?

我尝试在我的项目中使用Home/Index进行grepping,找不到引用,也无法在IIS(6)中看到任何内容.我查看了root中的default.aspx页面,但这似乎没有做任何相关的事情.

谢谢

c# asp.net-mvc asp.net-mvc-routing

104
推荐指数
3
解决办法
12万
查看次数

点字符'.' 在MVC Web API 2中请求诸如api/people/STAFF.45287之类的请求

我试图让工作的URL是以下风格的网址:http://somedomain.com/api/people/staff.33311(就像网站一样,LAST.FM允许在他们的RESTFul和WebPage网址中添加所有类型的标记例如," http://www.last.fm/artist/psy'aviah "是LAST.FM的有效网址.

以下方案有效: - http://somedomain.com/api/people/ - 返回所有人 - http://somedomain.com/api/people/staff33311 - 也可以,但不是我的意思在我希望网址接受"点"后,就像下面的示例 - http://somedomain.com/api/people/staff.33311 - 但这给了我一个

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Run Code Online (Sandbox Code Playgroud)

我已经设置了以下内容:

  1. 控制器"PeopleController"

    public IEnumerable<Person> GetAllPeople()
    {
        return _people;
    }
    
    public IHttpActionResult GetPerson(string id)
    {
        var person = _people.FirstOrDefault(p => p.Id.ToLower().Equals(id.ToLower()));
        if (person == null)
            return NotFound();
    
        return Ok(person);
    }    
    
    Run Code Online (Sandbox Code Playgroud)
  2. WebApiConfig.cs

    public static void Register(HttpConfiguration config)
    {
        // …
    Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api asp.net-web-api2

102
推荐指数
5
解决办法
5万
查看次数

什么是routes.IgnoreRoute("{resource} .axd/{*pathInfo}")

什么是 routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

我在项目中找不到任何.axd文件,我可以删除此路由规则吗?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

91
推荐指数
5
解决办法
6万
查看次数

你如何在ASP.NET MVC中的〜/ Views文件夹下请求静态.html文件?

我希望能够请求.html位于该~/Views文件夹中的静态文件.根据文档,路由系统在评估应用程序的路由之前检查URL是否与磁盘文件匹配.

但是当我请求文件时出现404错误.

我的文件位于〜/ Views文件夹中.URL是:http://[localhost]/Views/HtmlPage1.html

我错过了什么?

asp.net-mvc asp.net-mvc-routing

89
推荐指数
4
解决办法
8万
查看次数

强制所有区域使用相同的布局

我有以下项目结构:

  • /查看/共享/ _layout;

  • /地区/区域1 /浏览/ ControllerName /指数;

...

  • /地区/ AreaN /浏览/ ControllerName /索引.

有没有办法强制所有区域使用_Layout作为基本布局

有没有办法在不添加_ViewStart文件的情况下执行操作(例如,通过路由配置)?

也可以看看:

如何在ASP.NET MVC 3 razor ViewStart文件中指定不同的布局?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas razor

79
推荐指数
2
解决办法
3万
查看次数

"MapHttpRoute"和"MapRoute"之间的区别?

为什么使用"MapRoute"进行"默认"路由,而使用"MapHttpRoute"进行"DefaultApi"路由?

routes.MapHttpRoute(
  name: "DefaultApi",
  routeTemplate: "api/{controller}/{action}"
);

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-routing asp.net-web-api

67
推荐指数
2
解决办法
2万
查看次数