标签: asp.net-mvc-routing

如何在asp.net MVC中使用Server.Transfer方法?

我正在尝试将其用于登录页面.

if (Session["UserID"] == null)
     Server.Transfer("/Account/Login", true);
Run Code Online (Sandbox Code Playgroud)

但是我得到了异常 - >执行子请求/帐户/登录时出错.

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

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

ASP.NET MVC是否有任何DateTime路由约束?

ASP.NET MVC是否包含代码中的任何路由约束?如果是这样,我如何定义日期时间约束?

例如.网址:

http://mydomain.com/{versionDate}/{controller}/{action}
http://mydomain.com/2010-01-20/search/posts
Run Code Online (Sandbox Code Playgroud)

欢呼:)

asp.net-mvc asp.net-mvc-routing route-constraint

6
推荐指数
1
解决办法
2953
查看次数

枚举ASP.NET MVC RouteTable路由URL

我试图找出如何枚举的网址RoutesRouteTable.

在我的场景中,我定义了以下路由:

routes.MapRoute
  ("PadCreateNote", "create", new { controller = "Pad", action = "CreateNote" });
routes.MapRoute
  ("PadDeleteNote", "delete", new { controller = "Pad", action = "DeleteNote" });
routes.MapRoute
   ("PadUserIndex", "{username}", new { controller = "Pad", action = "Index" });
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我的网站是mysite.com,mysite.com/create会调用PadController.CreateNote(),而mysite.com/foobaris会调用它PadController.Index().

我还有一个强类型用户名的类:

public class Username
{
    public readonly string value;

    public Username(string name)
    {
        if (String.IsNullOrWhiteSpace(name)) 
        {
            throw new ArgumentException
                ("Is null or contains only whitespace.", "name");
        }

        //... make sure 'name' isn't a …
Run Code Online (Sandbox Code Playgroud)

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

6
推荐指数
1
解决办法
3237
查看次数

如何在多个应用程序或网站中重用区域,控制器,视图,模型,路由

我有一个测试解决方案,只有一个区域叫做Admin.

我想在许多其他Web应用程序中重用Admin.

我在IIS中的Web应用程序的设置,我已经加入虚拟应用程序,/Admin来自哪里Areas\Admin.

当我导航到/ Admin时,我看到了一个目录列表.当我尝试击中控制器时,/ Admin/News.我收到404错误.可能是这些区域没有注册,即使代码存在于global.asax中.但是,我确信我这一切都是错的.

请建议改变这种情况.

asp.net-mvc asp.net-mvc-routing reusability asp.net-mvc-3-areas asp.net-mvc-3

6
推荐指数
1
解决办法
2301
查看次数

使用asp.net MVC4,我怎样才能使我的root index.html默认执行?

对于我的大部分网站,我希望正常路由以MVC方式发生.但是,当应用程序首次启动时,我不希望路由转到/Home/Index.cshtml.我希望它简单地转到/Index.html

我目前的RegisterRoutes看起来像这样(并没有实现我的目标)

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("index.html");

        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-mvc-routing asp.net-mvc-4

6
推荐指数
2
解决办法
5448
查看次数

具有2个不同域的mvc3路由

我在mvc3中开发了一个多文化应用程序.我有一个包含域名列表的表(目前有2个记录):

  1. www.mydomain.com - > en-US
  2. www.mydomain.pl - > pl-PL

我的应用程序动态检查您来自哪个域,然后根据域设置CurrentCultureUI.这在我的localhost上运行正常,因为我还将这些域添加到我的主机文件中,但是我不确定如何在实时环境中处理这个?(是的,我确实已经购买了两个域名)任何想法?

编辑:我已经购买了一个'.com'域名并从godaddy和另一个'.pl'域名托管来自不同的注册商(home.pl).我已将我的网站上传到godaddy,但'pl'版本不起作用.现在,当我转到我的域名mngr为'.pl'域名时,我可以选择"使用其他主机"和"DNS"和"IP"的文本框.这是我需要做的吗?我需要从godaddy获得什么?到'home.pl'域配置?

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

5
推荐指数
1
解决办法
622
查看次数

强制ASP.NET MVC3处理程序忽略.cshtml和.vbhtml URL并将其传递给它们

似乎MVC3具有.cshtml和.vbhtml文件扩展名的优先级处理程序,并尝试在默认文件夹中找到它们.

请求这些网址时:

  • domain.com/test.cshtml
  • domain.com/test.vbhtml

MVC始终在默认文件夹中查找这些特定的静态文件.

无论扩展名或路由如何,我希望它完全忽略.cshtml和.vbhtml处理,只需像所有其他URL一样传递完整的URL,这样我就可以自己处理路由(使用Nancy).

在Azure实例上的IIS 7.5上运行MVC3 + Nancy + Razor.

azure asp.net-mvc-routing razor asp.net-mvc-3 nancy

5
推荐指数
1
解决办法
654
查看次数

ASP.NET 4 MVC Web API:复杂路由的文档

web api似乎只适用于标准用例.但我想做更复杂的路由,但找不到复杂路由的文档.如果我有更多的控制器,路由变得越来越复杂.

我可以使用依赖项定义几个可选参数吗?像这样:

/api/document/{par1}/{par2}
Run Code Online (Sandbox Code Playgroud)

par1和par2应该是可选的,但par2应仅在par1存在时匹配.

并且递归参数可能吗?

/api/documents/characteristics/{round/green/red-dots}
/api/documents/characteristics/{square/yellow}
/api/documents/characteristics/{square/yellow/flat}
/api/documents/characteristics/{square/yellow/flat/...}
Run Code Online (Sandbox Code Playgroud)

是否有关于web api路由的详细文档?微软教程太基础了...我需要有关路由的更多信息.

我有两个控制器和一些麻烦,因为两个路由非常相似,所以采取了错误的路线.我可以使用[Action] -Attribute作为解决方法,但这感觉不对......我还必须考虑路由的顺序.这是合乎逻辑的,但未提及.web api只适用于简单的休息api吗?


编辑: 我试过这个:

routes.MapHttpRoute(
           name: "DefaultApi",
            routeTemplate: "api/{mandant}/documents/{id}",
            defaults: new { controller = "documents", id = RouteParameter.Optional }
            );

//routes.MapHttpRoute(
//    name: "DefaultApiWithAction",
//    routeTemplate: "api/{mandant}/documents/{id}/{action}",
//    defaults: new { controller = "documents" }
//    );
Run Code Online (Sandbox Code Playgroud)

我有两种方法:

[AcceptVerbs("get")]
public HttpResponseMessage Get(int id)

[ActionName("file")]
[AcceptVerbs("get")]
public HttpResponseMessage filedownload(int id)
Run Code Online (Sandbox Code Playgroud)

现在我遇到了问题,即使我注释掉第二条路线也触发了文件操作,并且由于多个动作而没有触发正常的获取特定文档方法...我尝试了[NoAction]属性但这不起作用..但是如果路由模板中没有动作,为什么会触发文件方法呢?(或者如果第二个路由处于活动状态,为什么如果url中没有动作,则不会触发正常的get-document方法....)我当前的解决方法是为所有其他方法设置default-action,但是这不是一个好的解决方案.

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

5
推荐指数
1
解决办法
8171
查看次数

IIS 7与IIS Express发生HTTP 404错误的路由错误

我在Visual Studio 2010和C#4.0中使用MVC 3.我的应用程序在IIS Express中从Visual studion正常工作,并在部署到远程生产IIS 7.5服务器时正常工作.

当我在我的开发系统上切换到使用完整的IIS 7.5服务器时,我突然开始为我的两个控制器中的操作获取HTTP 404错误.其他控制器正常运行.这是从Visual Studio运行应用程序或直接从IIS运行.

我看不到任何配置差异.

其中一个表现出这种行为的控制器是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using Mbrrace.ApplicationServices.Validation;

namespace Mbrrace.WebUI.Areas.Validation.Controllers
{
    public class ValidationController : Controller
    {
        //
        // GET: /Validation/Validation/

        [HttpGet]
        public JsonResult PostcodeCheck([Bind(Prefix = "perinatalView")]AddressViewModel model)
        {

            //  postcode has already been checked for correct format
            //  now look it up to see if it exists

            if (PostcodeChecks.CheckPostcodeExists(ConfigurationManager.ConnectionStrings["CommonCodeEntities"].ConnectionString, model.Postcode))
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }

            return Json("This postcode was not …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc iis-7 http asp.net-mvc-routing

5
推荐指数
1
解决办法
1719
查看次数

ASP.NET 4.5和Web API中的URL重写

我们有一个长期运行的ASP.NET Web表单应用程序,它诞生于.NET 1.1/IIS6时代.我们现在使用的是.NET4.5/IIS7,但我们对MVC一无所知.

我们为客户提供目录,并为他们提供可以使用的URL:

www.ourhost.com/customername
Run Code Online (Sandbox Code Playgroud)

使用我们开发的自定义IHttpModule,我们从URL中提取"customername"以在数据库中查找客户.然后,该客户的ID将存储在页面的上下文*中,并由网站上的几乎所有页面使用,以便为该客户自定义内容.完成此过程后,上述URL将被重写并处理为

www.ourhost.com/index.aspx
Run Code Online (Sandbox Code Playgroud)

index.aspx可以通过其上下文访问客户的ID,它可以做到这一点.

这很好用,我们用它支持数千名客户.重写逻辑相当复杂,因为它验证了客户帐户,如果客户无效,则重定向到"哦"页面,如果客户没有付款,则重定向到"查找经销商"页面等.

现在我想构建一些Web API控制器,MVC风格的重写令我担心.我看到很多例子,其中重写恰好使URL像这样工作:

www.ourhost.com/api/{controller}
Run Code Online (Sandbox Code Playgroud)

但我仍然需要在客户的环境中发生这些web api'调用'.我们的页面使用JSON/AJAX异步调用变得越来越复杂,但在回答这些调用时,我仍然需要客户上下文.我想要的URL是

www.ourhost.com/customername/api/{controller}
Run Code Online (Sandbox Code Playgroud)

但我很困惑如何配置路由来做到这一点,并让它与我们的IHttpModule很好地配合.

这甚至可能吗?

*更新:当我说"存储在页面上下文中"时,我指的是与每个Web请求相关联的HttpContext,其中包含一个字典,我可以在其中存储一些页面/请求特定的数据.

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

5
推荐指数
1
解决办法
1884
查看次数