Tag: asp.net mvc

如何使控制器的名称连字符“ – ”分开?

我能够使用 [ActionName(“My-Action-Name”)] public ActionResult MyActionName() { return View(); } 但我在更改控制器名称时遇到问题。 是否有一些注释可用于在MVC 4中分隔控制器名称连字符( – )? 有点像这样: [ControllerName(“My-Controller-Name”)] public class MyControllerName : Controller { }

无法找到请求的.Net Framework数据提供程序。 程序(SqlClient)

我正在尝试使用数据库首次从SQL Server迁移(2005)来设置一个简单的ASP.NET MVC 4 webapp。 我在数据库中创建了表,并使用Entity Framework在代码中创建了对象。 我可以使用这些对象访问数据。 当我尝试使用WebSecurity.InitializeDatabaseConnection(“FLMREntities”, “UserProfile”, “UserId”, “UserName”, true);初始化WebSecurity时出现问题WebSecurity.InitializeDatabaseConnection(“FLMREntities”, “UserProfile”, “UserId”, “UserName”, true); 在Global.asax.cs文件中。 我已经尝试使用模板附带的InitializeSimpleMembershipAttributefilter并遇到了同样的问题。 我收到错误消息: Unable to find the requested .Net Framework Data Provider. It may not be installed. 这是相关的连接字符串: 此外,我在数据库中创建了成员资格表,以匹配模板创建的内容。 如果我将Initialize调用中的最后一个参数更改为false(以便它不会尝试自动创建表),则返回它无法找到UserProfile表。 我也试过名称的变体,例如[dbo]。[UserProfile]。 我只需要一个简单的帐户模型,以允许用户登录并允许某些用户查看更多内容。

ASPNET MVC – 使用具有相同签名的新助手覆盖Html.TextBoxFor(model.property)?

我想用我自己的帮助器覆盖Html.TextBoxFor(),该帮助器具有完全相同的签名(当然是一个不同的命名空间) – 这是可能的,如果是这样,怎么样? 这样做的原因是我在现有应用程序中有100多个视图,我想改变TextBoxFor的行为,以便在属性具有[StringLength(n)]注释时输出maxLength = n属性。 自动输出maxlength = n的代码在这个问题中: 来自Asp.Net MVC中DataAnnotations StringLength的文本框的maxlength属性 。 但我的问题并不重复 – 我正在尝试创建一个更通用的解决方案:DataAnnotaion自动流入html,而不需要编写视图的人员需要额外的代码。 在引用的问题中,您必须将每个Html.TexBoxFor更改为Html.CustomTextBoxFor。 我需要这样做,以便不需要更改现有的TextBoxFor() – 因此创建一个具有相同签名的帮助程序:更改辅助方法的行为,并且所有现有实例都可以正常工作而不做任何更改(100 + views,至少500 TextBoxFor()s – 不想手动编辑它)。 我尝试了这段代码:(我需要为TextBoxFor的每次重载重复它,但一旦根问题解决了,那将是微不足道的) namespace My.Helpers { public static class CustomTextBoxHelper { public static MvcHtmlString TextBoxFor(this HtmlHelper htmlHelper, Expression<Func> expression, object htmlAttributes, bool includeLengthIfAnnotated) { // implementation here } } } 但是我在Html.TextBoxFor()视图中遇到编译器错误:“调用在以下方法或属性之间是不明确的”(当然)。 有没有办法做到这一点? […]

我该如何调试mvc4 razor视图?

我已经习惯了C#和vb.net winforms,通常可以通过设置断点和单步执行代码来找到我需要的所有错误。 我想知道我做错了什么。 我在这里放置一个断点: public ActionResult Index(int id) { var cnty = from r in db.Clients where r.ClientID == id select r; if (cnty != null) // breakpoint here { return View(cnty); // F11 jumps over this section of code returning me to the error page below. } return HttpNotFound(); } 然而,我再也不知道它究竟出错的地方或原因。 我怎样才能找出原因或更好的错误呢? 我正在使用VS2012 mvc4 […]

ASP.NET MVC绑定与远程validation

我有一个ModelA ,一个成员toBeRemoteChecked和一个模型MapToA与成员valueToMap 。 每当我创建一个ModelA实例时,我还需要一个MapToA实例,所以我有一个模型CreateModelA ,它包含一个成员modelA和一个成员valueToMap 。 提交表单时,我将modelA添加到数据库表ModelA并创建并向MapToA添加一个实例,该实例由MapToA的id和valueToMap 。 在代码方面 public class ModelA { [Key] public int ID { get; set; } [Required, Remote(“isValid”, “MyController”, ErrorMessage = “not valid”)] public string toBeRemoteChecked { get; set; } } public class MapToA { [Key] public int Map_ID { get; set; } [Required] public int modelAID { get; set; […]

为什么我在这里“无法访问封闭的流”?

堆栈跟踪看起来像 [ObjectDisposedException:无法访问已关闭的Stream。] System.IO .__ Error.StreamIsClosed()+ 53 System.IO.MemoryStream.Read(Byte [] buffer,Int32 offset,Int32 count)+11411219 System.Web.Mvc.FileStreamResult.WriteFile(HttpResponseBase response)+81 System.Web.Mvc.FileResult.ExecuteResult(ControllerContext context)+ 168 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext,ActionResult actionResult)+13 在调用之后 //Byte[] bytes; using ( var ms = new MemoryStream() ) { using ( var doc = new Document() ) { using ( var writer = PdfWriter.GetInstance(doc, ms) ) { doc.Open(); //var example_html = @”This is […]

在View中创建HiddenFor IEnumerable

我有一个IEnumerable属性 public IEnumerable ChangesOthersResult { get; set; } 我需要从ChangesOthersResult收集所有值并从视图发回到控制器。 我如何遍历Ienumerable并创建将绑定回控制器中的ViewModel的隐藏字段? foreach(var item in Model.ChangesOthersResult) { @Html.HiddenFor(x => x.ChangesOthersResult); } 给我Raw SQL语句作为文本。

登录时处理防伪造错误,同时已登录? ASP.NET MVC

当用户登录时,然后进入登录页面。 如果他再次尝试登录,则会出现Anti forgery Error。 防伪令牌无法解密。 如果此应用程序由Web场或群集托管,请确保所有计算机都运行相同版本的ASP.NET网页,并且配置指定显式​​加密和validation密钥。 AutoGenerate不能在群集中使用。 我得到的另一种错误是: 提供的防伪令牌适用于与当前用户不同的基于声明的用户。 如何处理这种防伪造错误?

堆栈不足以继续安全地执行程序。 ASP.NET MVC 4

我的搜索function似乎在无限循环中继续,每次我的调试命中POST动作结果下面的操作被触发。 在我的Masterpage.cshtml中,我有以下操作: @Html.Action(“Search”, “Search”) 这是得到以下错误的部分: 堆栈不足以继续安全地执行程序。 这可能是因为调用堆栈上的函数太多或堆栈上的函数占用太多堆栈空间。 在我的SearchController中,我有一个get和post动作方法: [HttpGet] public ActionResult Search() { return PartialView(“SearchFormPartial”); } 这个返回包含以下内容的部分视图: @using (Ajax.BeginForm(“Search”, “Search”, FormMethod.Post, new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = “POST” })) { @Html.TextBox(“query”, “”, new { @class = “search-query”, @placeholder=”Search news…”, @spellcheck=”false”}) } 它基本上是一个带有文本框和提交按钮的表单。 这是http post actionresult: [HttpPost] public ActionResult Search(string query) { if (query […]

将Func作为属性参数传递以保护MVC路由

我正在尝试从满足一系列标准的一组用户中保护我的MVC路由。 由于MVC似乎使用了很多属性而且Steven Sanderson在他的专业MVC书中使用了一个安全可扩展性,所以我开始沿着这条路走下去,但我想根据我应用它的动作来定义规则。 有些行为仅适用于员工,有些则不适用。 有些行为仅适用于公司1,有些则不适用。 所以我在想这种用法…… [DisableAccess(BlockUsersWhere = u => u.Company != “Acme”)] public ActionResult AcmeOnlyAction() { … } [DisableAccess(BlockUsersWhere = u => u.IsEmployee == false)] public ActionResult EmployeeOnlyAction() { … } 看起来很干净,我真的很容易实现,但我得到以下编译器错误: ‘BlockUsersWhere’不是有效的命名属性参数,因为它不是有效的属性参数类型 显然你不能使用Func作为属性参数。 任何其他建议可以解决这个问题或其他提供我们在MVC项目中喜欢的简单用法的建议吗?