我正在做一个CORS POST请求,并将Content-Type头设置为json。 这触发一个预检选项请求触发(这是好的和预期的) 这个OPTIONS请求以200 OK响应,但这不是来自我的WebAPI应用程序。 我有一个自定义的消息处理程序的地方,它从来没有得到命中,所以这个请求得到了IIS的响应之前,看起来像ASP.NET。 我已经find关于这个问题的几个职位,他们说以下 确保WebDav已被卸载/删除/禁用 – 完成 确保将OPTIONSVerbHandler移除/更改为使用aspnet_isapi.dll – TRIED BOTH 确保extensionlessURLHandler包含OPTIONS动词 – 完成 不过,我的select请求仍然被劫持。 我的意思是,IIS以200 OK响应,但在响应中不包含Access-Control-Allow-Origin标头。 它不包括这个头,因为它永远不会到我的WebAPI CORS代码将设置此标头。 我能find的两个最好的post听起来像我的问题是 在这里: JQuery卡在CORS预检和IIS ghost响应 在这里: http : //brockallen.com/2012/10/18/cors-iis-and-webdav/ 我已经尝试启用IIS中的失败请求跟踪(FERB),并将其设置为跟踪所有200个状态代码。 我从来没有看到选项请求被logging…不知道这是否意味着FERB不跟踪OPTIONS请求,或者如果我需要改变FERB设置的东西,使其跟踪OPTIONS请求,或者如果这是一个线索我的问题是什么? 这是在IIS 7.5上运行的ASP.NET WebAPI 2.0(也在IIS 8和IISExpress上testing,结果相同)无论浏览器(Chrome,FF和IE都以相同方式失败) 我已经尝试了一切可以find的主题,但仍然无法解决我的问题。 帮助我StackOverflow,你是我唯一的希望。
有没有简单的方法将stringURL转换为RouteValueDictionary集合? 像UrlToRouteValueDictionary(string url)一些方法。 我需要这样的方法,因为我想根据我的路由设置“parsing”URL,修改一些路由值,并使用urlHelper.RouteUrl()根据修改后的RouteValueDictionary集合生成stringURL。 谢谢。
我用jQuery的ajax函数来提交表单。 用户必须login,否则他们必须redirect到login页面。我已经使用了Authorize()属性。 [Authorize] public ActionResult Creat() { …. } 如果用户没有login到jQuery的ajax函数的动作返回login页面,它显示在同一页面,但我想redirect用户login页面。 有没有解决办法?
现在我明白了 if (IsPost){ //do stuff } 检查该页面上的所有发布方法。 不过,我有两种不同的forms发布2个不同的信息。 这些是login表单和registry单。 有没有一种方法可以检查IsPost基于哪种forms? 例如, if(Login.IsPost){ //do stuff } 但是我将如何定义Loginvariables? 我的表单看起来像: <form id="Login" method = "POST"> 我努力了: var Login = Form.["Login"] 它不起作用。 我将不胜感激任何帮助。 谢谢。
我正在研究一个MVC3的Web应用程序。 我需要从应用程序pipe理系统编辑blo时显示的类别列表。 在我的viewmodel我有以下属性为类别select列表项列表定义。 /// <summary> /// The List of categories /// </summary> [Display(Name = "Categorie")] public IEnumerable<SelectListItem> Categories { get; set; } 下一步,我的控制器包含以下编辑操作,其中从数据库填充selectlistitems的列表。 public ActionResult Edit(Guid id) { var blogToEdit = _blogService.First(x => x.Id.Equals(id)); var listOfCategories = _categorieService.GetAll(); var selectList = listOfCategories.Select(x =>new SelectListItem{Text = x.Name, Value = x.Id.ToString(), Selected = x.Id.Equals(blogToEdit.Category.Id)}).ToList(); selectList.Insert(0, new SelectListItem{Text […]
我一直在使用新的ASP.Net MVC 3 RemoteAttribute发送远程调用一个具有单一参数的操作方法。 现在我想使用AdditionalFields属性传入第二个参数: [Remote("IsEmailAvailable", "Users", AdditionalFields = "InitialEmail")] IntialEmail是视图中的隐藏字段。 行动看起来像这样: public JsonResult IsEmailAvailable( string email, string InitialEmail) { //etc. } 当呈现视图时,隐藏的字段被填充,但是当远程触发Action方法时,该值是一个空string。 我在其他地方见过大小写敏感可能是一个问题,所以我确保了Action方法对于这两个参数都有相同的情况。 还有其他build议吗? 这个附加字段曾经被称为字段。 谢谢, Beaudetious
我注意到在我看来,在asp.net MVC中的错误,或者只是我做错了什么。 我目前正在使用1.0,所以也许这是2.0版本中将要解决的问题。 但无论如何,我们走吧。 当我的视图模型有一个属性是一个下拉列表中声明的ID相同的名称,选定的项目将被忽略,呈现的HTML没有任何select。 不知道我做错了什么,但更改id的名称可以解决问题。 我简化了这个例子,希望是明确的,否则请让我知道。 这里是我的视图,其中声明的ID与模型中的列表名称相同: <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <%= Html.DropDownList("IsMultipleServicers", Model.IsMultipleServicers) %> </td> </tr> </table> 和呈现的Html <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <select id="IsMultipleServicers" name="IsMultipleServicers"> <option value="false">No</option> <option value="true">Yes</option> </select> </td> </tr> </table> 现在让我们做一个小小的改变。 我会改变声明的ID是不同的东西。 这是我的观点: <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <%= Html.DropDownList("MultipleServicers", Model.IsMultipleServicers) %> </td> </tr> </table> […]
我试图写一些代码,允许我在SQLCE(本地在我的开发机器)和完整的SQL(在AppHarbor)之间切换。 使用SQL CE,连接string都是为我处理的,但是我必须自己构造SQL。 我的代码到目前为止,但是它给出了这个错误: 不支持的关键字:“元数据” 我一直在网上查找几个小时,但所有的解决scheme都涉及使用“ContextBuilder”类,我无法find(我通过NuGet包安装EF)。 这是当前的代码(通过WebActivator启动时运行): public static void Start() { // Read the details from AppSettings. Locally, these will be empty. var databaseHost = ConfigurationManager.AppSettings["DatabaseHost"]; var databaseName = ConfigurationManager.AppSettings["DatabaseName"]; var databaseUsername = ConfigurationManager.AppSettings["DatabaseUsername"]; var databasePassword = ConfigurationManager.AppSettings["DatabasePassword"]; // Check whether we have actual SQL Server settings. if (!string.IsNullOrWhiteSpace(databaseHost) && !string.IsNullOrWhiteSpace(databaseName)) { // Set […]
在Asp.NET MVC在HTML Hepler方法的帮助下,可以以dd / mm / yyyy格式显示DateTime值吗? 我试图通过使用@Html.LabelFor一些格式来做到这一点,并添加一些注释到像下面的相关属性,但它没有任何意义。 任何帮助解决这个问题,将不胜感激。 模型: [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public Nullable<System.DateTime> RegistrationDate { get; set; }
我有一个使用ASP.NET MVC,Unity和Linq到SQL的应用程序。 统一容器注册从System.Data.Linq.DataContextinheritance的typesAcmeDataContext ,并使用HttpContext与LifetimeManager 。 有一个控制器工厂使用统一容器获取控制器实例。 我在构造函数中设置了所有依赖关系,如下所示: // Initialize a new instance of the EmployeeController class public EmployeeController(IEmployeeService service) // Initializes a new instance of the EmployeeService class public EmployeeService(IEmployeeRepository repository) : IEmployeeService // Initialize a new instance of the EmployeeRepository class public EmployeeRepository(AcmeDataContext dataContext) : IEmployeeRepository 无论何时需要构造函数,统一容器都会parsing一个连接,该连接用于parsing数据上下文,然后是存储库,然后是服务,最后是控制器。 问题是IEmployeeRepository暴露了SubmitChanges方法,因为服务类没有DataContext引用。 我被告知应该从仓库外部pipe理工作单元,所以看起来我应该从仓库中删除SubmitChanges 。 这是为什么? 如果这是真的,这是否意味着我必须声明一个IUnitOfWork接口并使每个服务类都依赖于它? 我还可以如何让我的服务class来pipe理工作单位?