标签: asp.net-mvc-routing

asp.net mvc id没有被拉出路线?

我还没有做任何花哨的路线模式,只是基本的控制器,动作,id风格.

但是,我的行为似乎永远不会传递给我.当我在任何一个动作中粘贴断点时,id参数的值为null.是什么赋予了?

的Global.asax.cs:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                                  // Route name
            "{controller}/{action}/{id}",                               // URL with parameters
            new { controller = "Tenants", action = "Index", id = "" }   // Defaults
        );
    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
        //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
        ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());
    }

    protected void Application_AuthenticateRequest()
    {
        if (User != null)
            Membership.GetUser(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

TenantsController.cs上的Index()操作:

/// <summary>
    /// Builds the Index view for Tenants
    /// </summary>
    /// <param name="tenantId">The id of a …
Run Code Online (Sandbox Code Playgroud)

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

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

如何路线/关于/ Home/About

我刚刚开始使用ASP.NET MVC,它非常棒!但是,我不太了解设置路线.

我如何路线〜/关于〜/ Home/About?

/Views/Home/About.aspx

我希望能够通过/ Home/About 或just / About访问它

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

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

如何配置ASP.NET MVC路由以在"主页"页面上隐藏控制器名称?

继这个问题之后:

使用默认控制器的ASP.NET MVC路由

我有一个类似的要求,我的最终用户不希望在登陆的URL或他们的应用程序的"主页"中看到控制器名称.

我有一个控制器DeviceController,我想成为"主页"控制器.这个控制器有很多动作,我想使用URL如下:

http://example.com  -> calls Index()  
http://example.com/showdevice/1234 -> calls ShowDevice(int id)  
http://example.com/showhistory/1224 -> calls ShowHistory(int id)  

我还需要为此控制器生成的链接省略/deviceurl 的一部分.

我还有许多其他控制器,例如BuildController:

http://example.com/build  
http://example.com/build/status/1234  
http://example.com/build/restart/1234  

等等.这些控制器的URL很好.

问题是,即使在研究了上面提到的问题的答案之后,我似乎也无法理解这个问题.

有人可以提供一个代码示例来解释如何执行此操作吗?

我正在使用ASP.NET MVC2.

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

2
推荐指数
1
解决办法
7445
查看次数

从ASP.NET MVC路由生成URL

如果我有一些路线设置如下:

context.MapRoute("Route1", "Public/DataCapture/Name", new { controller = "Profile", action = "Name" } );

context.MapRoute("Route2", "Public/DataCapture/Age", new { controller = "Profile", action = "Age" } );

context.MapRoute("Route2", "Public/DataCapture/Amount", new { controller = "Income", action = "Amount" } );
Run Code Online (Sandbox Code Playgroud)

如何生成使用路径路径而不是实际控制器/操作路径的URL?

例如

Url.Action("Name", "Profile")
Run Code Online (Sandbox Code Playgroud)

应生成"Public/DataCapture/Name"而不是"Public/Profile/Name"

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

2
推荐指数
1
解决办法
3978
查看次数

未找到视图"主页"或其主页,或者没有视图引擎支持搜索的位置.搜索了以下位置:"偶发错误"

在尝试返回View时,使用我的MVC 4应用程序时出现偶发错误.

在这种特殊情况下,我即将返回一个View return View("Home", model);,这就是我获取msg的地方.当您不断进行测试和调试时,它似乎偶尔也会发生,我认为View Engine会疯狂.例如,在此之前,我正在执行一个简单的视图,并说当它一直存在时无法找到它.结合清除缓存,重新启动等,并执行相同的确切逻辑后,它工作.

所以,我不知道如何使用View Engine解决这个问题.在我回到View之前,我可以向你保证我的模型中有记录.我不能在我的电脑上附上这张表格上的丝网印刷品 - 没有选择.

所以,可怕的问题是:如何解决这个问题,它不会偶尔发生这样的问题?这是一个严重的问题,希望能够解决这个问题....

我查看了Scott Hanselmans nuget包的预编译视图等,但似乎过于复杂和额外的工作.我想知道我能做些什么.

任何帮助将非常感激....

这是我的Globla.asax文件:

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

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

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

如果有人可以请回答,我将不胜感激,因为这将使我们正在努力的MVC应用程序停止!

我尝试添加.DataTokens.Add("area", "YOURAREANAME");到最后MapRoute,但我不知道用什么来代替字符串.

另外,我不知道为什么要这样做(如果它会修复它)并需要某人的解释......

为另一个想要签出控制器代码的人添加了代码.

[HttpPost]
        public ActionResult Refresh(ViewModelTemplate_Guarantors model)
        {
            try
            {
                model.Error = string.Empty;

                bool dbHasRows …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc view asp.net-mvc-routing viewengine

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

使用ASP.net MVC从不同的目录路由静态文件,而不进行IIS更改和身份验证

让我留下来为我的应用程序的单个用户存储内容:

  • C:\文件{GUID} \

这些文件可能是这样的:

  • C:\文件{GUID}\bunny.jpg
  • C:\文件{GUID}\unicorn.html

最终用户应该看到一个"友好"的网址.

http:// domain.com/files/{GUID}/bunny.jpg

该URL必须以某种方式通过控制器或httpmodule或thingIdontknow才能被授权查看该文件.这些权限可能每天都在变化,因此需要经常检查文件的权限.

从我读过的内容来看,这完全是可能的,但我不确定接下来要编码什么,或者有人在这里有任何见解.HttpModule还是Controller?我很困惑需要发生什么.

asp.net-mvc mvcroutehandler httpmodule asp.net-mvc-routing asp.net-mvc-3

2
推荐指数
1
解决办法
3050
查看次数

当返回类型为HttpResponseMessage时,Web Api Get()路由不起作用

这让我有点头疼.最终,我正在尝试返回一张图片,但我一直在尝试并将其简化为使用字符串.

我想要的:转到URL:

http://xxx/api/helloworld/1
Run Code Online (Sandbox Code Playgroud)

回应:"Hello world!"

以下web api声明适用于提供的url;

public string Get([FromUri]int id) { return "Hello World"; }
public Task<string> Get([FromUri]int id) { return "Hello World"; }
Run Code Online (Sandbox Code Playgroud)

什么不起作用;

public HttpResponseMessage Get([FromUri]int id) 
{ 
    return Request.CreateResponse<string>(HttpStatusCode.OK, "Hello World");
}

public HttpResponseMessage Get([FromUri]int id)
{
    HttpResponseMessage response = new HttpResponseMessage();

    string text = "Hello World";
    MemoryStream test = new MemoryStream();
    test.Write(ConversionUtilities.ToBytes(text) /*custom string->byte[] method, UTF-8 encoding*/, 0, text.Length);

    response.Content = new StreamContent(test);
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
    response.StatusCode = HttpStatusCode.OK;

    return response;
}
Run Code Online (Sandbox Code Playgroud)

当我有一个返回类型为HttpResponseMessage的Get()时会发生以下错误:

No …
Run Code Online (Sandbox Code Playgroud)

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

2
推荐指数
1
解决办法
4430
查看次数

MVC4 RouteConfig.cs不返回静态文件robots.txt

所以这就是我的RouteConfig的样子:

 public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute("Robots.txt",
            "robots.txt",
            new { 
                controller = "Home", 
                action = "Robots", 
                id = "", 
                language = "en", 
                culture = "us" 
            });
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Default",
            "{language}/{culture}/{controller}/{action}/{id}",
            new
            {
                controller = "Home",
                action = "Index",
                id = "",
                language = "en",
                culture = "us"
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

现在根据我的理解,当我访问www.mysite.com/robots.txt时,网站应该路由到robots.txt,但事实并非如此.我在服务另一个静态页面时也遇到了问题,但我发现了一种解决方法,并且不必为静态.html页面提供服务.

我在MVC3中构建了另一个站点,我复制了我在那里使用的路由配置模式,它们似乎工作正常.任何想法为什么这不起作用?

PS当我浏览到www.mysite.com/en/US/Home/Robots时,我看到robots.txt文件就好了,所以所有的控制器,操作和视图都匹配得很好.

谢谢!

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

2
推荐指数
1
解决办法
1409
查看次数

是否可以在控制器外部的运行时获取路径数据?

我想知道是否有可能以某种方式获得控制器之外的路由值?

这就是我尝试过的.我也试过,.Values["{projectId}"];但我还是得到了null.

[RoutePrefix("projects")]
public class UsergroupController : ApiController
{
    [Route("{projectId}/usergroups"), HttpGet]
    public IHttpActionResult Get()
    {
        // Url: /projects/123/usergroups
        // Response: null
        var projectId = HttpContext.Current.Request.RequestContext.RouteData.Values["projectId"];
        return Ok(projectId);
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现它位于,但是在一个非常奇怪的问题.也许可能有某种LINQ查询来获取它?

的RouteData值值-0-0值0

在此输入图像描述

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

2
推荐指数
1
解决办法
4203
查看次数

WebApi-使用[FromBody]属性和POST方法时,动作参数为null

我有这个控制器,我不知道为什么name参数为null

public class DeviceController : ApiController
{
    [HttpPost]
    public void Select([FromBody]string name)
    {
        //problem: name is always null
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的路线图:

public void Configuration(IAppBuilder appBuilder)
{
    HttpConfiguration config = new HttpConfiguration();
    config.Routes.MapHttpRoute(
        name: "ActionApi",
        routeTemplate: "api/{controller}/{action}"
    );

    appBuilder.UseWebApi(config);
}
Run Code Online (Sandbox Code Playgroud)

这是我的要求:

POST http://localhost:9000/api/device/Select HTTP/1.2
User-Agent: Fiddler
Host: localhost:9000
Content-Length: 16
Content-Type: application/json

{'name':'hello'}
Run Code Online (Sandbox Code Playgroud)

我还尝试将正文更改为纯字符串:hello

POST http://localhost:9000/api/device/Select HTTP/1.2
User-Agent: Fiddler
Host: localhost:9000
Content-Length: 5
Content-Type: application/json

hello
Run Code Online (Sandbox Code Playgroud)

该请求返回204,这没问题,但是该参数从不映射到发布值。

*我使用的是自托管的owin服务。

c# model-binding asp.net-mvc-routing asp.net-web-api owin

2
推荐指数
1
解决办法
9559
查看次数