标签: asp.net-mvc-routing

MVC自定义路由和ActionLinks

我们正在使用由多个客户共享的asp.net mvc应用程序.我们需要url包含客户端url友好名称.例如:

domain.com/clientName/controller/action/id

以下内容似乎在路由时起作用,但是对于操作链接助手没有正确生成"clientName".

_routes.MapRoute("DefaultRoute",
                "{clientName}/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = string.Empty },
                new { clientName = @"[\w-]+" });
Run Code Online (Sandbox Code Playgroud)

我们希望继续使用Html.ActionLink Helper方法,但它不会在生成的链接中包含clientName.我们是否必须在这种情况下编写自己的帮助者,还是有替代方法?

有没有其他人使用这种类型的路由方案构建应用程序?任何建议,将不胜感激!

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

5
推荐指数
3
解决办法
5654
查看次数

具有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
查看次数

传递ID,但不要在实际网址中显示

我想获得友好的网址.目前友好的网址是这样的:

本地主机/客户/ 1/namehere

我希望他们这样:

本地主机/客户/ namehere

但仍然需要id(因为我用这个id搜索我的数据库).我的可能性是什么?这甚至可能吗?

这是我的MapRoute:

context.MapRoute(
            "Customer_Default",
            "customer/{customername}/",
            new { controller = "customer", action = "view", id = "", customername = "" }
        );
Run Code Online (Sandbox Code Playgroud)

这是我链接的方式:

@Html.ActionLink(c.Bedrijfsnaam, "view", "customer", new { id = c.Klantnummer, customername = UrlEncoder.ToFriendlyUrl(c.Bedrijfsnaam) }, null)
Run Code Online (Sandbox Code Playgroud)

谢谢.

更新: 哦,如果用户更改它并不重要.我只是想让它不显示.这样用户就可以轻松地将网址更改为他们想去的地方.而且不必担心ids.(但我仍然需要它.:))

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

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

强制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-mvc路由问题:参数字典包含参数的空条目

我正在尝试使用以下映射路由设置自定义路由

编辑:我的完整路线配置

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

        #region FixtureAdmin

        routes.MapRoute(
            name: "FixtureEdit",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "FixtureAdmin", action = "Edit", id = UrlParameter.Optional }
        );

        #endregion

        #region Results

        routes.MapRoute(
            name: "ResultAdd",
            url: "{controller}/{action}/{fixtureId}",
            defaults: new { controller = "Result", action = "Add", fixtureId = UrlParameter.Optional }
        );

        #endregion
Run Code Online (Sandbox Code Playgroud)

和我的控制器代码

public ActionResult Add(int fixtureId)
    {
       // return model to view etc..
    }
Run Code Online (Sandbox Code Playgroud)

即使我已将参数指定为可选参数,也会出现异常. …

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

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

ASP.NET MVC4使用webforms Default.aspx作为起始页面

我有一个ASP.NET MVC4应用程序,其中包含在Global.asax.cs中定义的以下路由.应用程序的起始页面是从Home控制器的操作方法Index()返回的Index.cshtml视图.然后,我添加了一个将Default.aspx作为起始页面的旧版ASP.NET WebForms应用程序.如何将此Default.aspx页面作为此集成MVC + WebForms应用程序的起始页面:

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

            routes.MapRoute(
                "Default",
                "{controller}.mvc/{action}/{id}",
                new { action = "Index", id = "" }
              );


              routes.MapRoute(
              "Root",
              "",
              new { controller = "Home", action = "Index", id = "" }
            );


        }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc webforms asp.net-mvc-routing asp.net-mvc-4

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

使用cshtml页面的angularjs不是带有web api 2的html页面

我有asp.net mvc4项目.Angularjs是一体化的.我已经按照以前的要求构建了HTML页面和WEB API 2.

现在由于某种原因,我必须使用CSHTML页面.以前我只有web api项目模板所以我不能用cshtml页面,因为只有MVC控制器可以返回部分页面(cshtml),但我只使用web apis ...

所以改变了整个项目模板,所以现在我可以拥有mvc控制器......

总之,目前我已经建立了web apis和html页面的mvc4项目.....

我只是想使用CSHTML页面而不是使用HTML页面休息的东西应该是它们......

可能吗?

我可能听起来很傻但现在需要它.帮助将不胜感激......

仅限Web apis,cshtml页面和angularjs.不是web apis,html pages和angularjs.

如果我html根据cshtml, 角度路线如何影响来替换页面?

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

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

如何忽略ASP.NET MVC路由中的特定路由

如果我希望应用程序忽略以"得分"一词开头的所有网址,那么在ASP.NET MVC应用程序中放入RouteConfig.RegisterRoutes方法的正确语法是什么

http://myserver/score*.*

换句话说,任何以文本"得分"开头的网址都希望我的应用忽略.

我试过了:

routes.IgnoreRoute("score*.*/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)

我也尝试了这种语法的其他几种组合,但不能完全正确.

这是我目前在RouteConfig中所拥有的内容.这几乎是标准的东西.

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

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

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

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