我正在尝试将其用于登录页面.
if (Session["UserID"] == null)
Server.Transfer("/Account/Login", true);
Run Code Online (Sandbox Code Playgroud)
但是我得到了异常 - >执行子请求/帐户/登录时出错.
ASP.NET MVC是否包含代码中的任何路由约束?如果是这样,我如何定义日期时间约束?
例如.网址:
http://mydomain.com/{versionDate}/{controller}/{action}
http://mydomain.com/2010-01-20/search/posts
Run Code Online (Sandbox Code Playgroud)
欢呼:)
我试图找出如何枚举的网址Routes中RouteTable.
在我的场景中,我定义了以下路由:
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) 我有一个测试解决方案,只有一个区域叫做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
对于我的大部分网站,我希望正常路由以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) 我在mvc3中开发了一个多文化应用程序.我有一个包含域名列表的表(目前有2个记录):
我的应用程序动态检查您来自哪个域,然后根据域设置CurrentCultureUI.这在我的localhost上运行正常,因为我还将这些域添加到我的主机文件中,但是我不确定如何在实时环境中处理这个?(是的,我确实已经购买了两个域名)任何想法?
编辑:我已经购买了一个'.com'域名并从godaddy和另一个'.pl'域名托管来自不同的注册商(home.pl).我已将我的网站上传到godaddy,但'pl'版本不起作用.现在,当我转到我的域名mngr为'.pl'域名时,我可以选择"使用其他主机"和"DNS"和"IP"的文本框.这是我需要做的吗?我需要从godaddy获得什么?到'home.pl'域配置?
似乎MVC3具有.cshtml和.vbhtml文件扩展名的优先级处理程序,并尝试在默认文件夹中找到它们.
请求这些网址时:
MVC始终在默认文件夹中查找这些特定的静态文件.
无论扩展名或路由如何,我希望它完全忽略.cshtml和.vbhtml处理,只需像所有其他URL一样传递完整的URL,这样我就可以自己处理路由(使用Nancy).
在Azure实例上的IIS 7.5上运行MVC3 + Nancy + Razor.
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,但是这不是一个好的解决方案.
我在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 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,其中包含一个字典,我可以在其中存储一些页面/请求特定的数据.