Tag: asp.net mvc 3

如何以及何时填充MVC-ControllerTypeCache.xml

我有几个与此文件相关的问题(MVC-ControllerTypeCache.xml)。 1)谁能告诉我这个文件何时以及如何生成? 我知道它是由框架生成的,以减少调用控制器时所需的reflection量。 我也知道MVC源中有一些内部类用于处理它,控制器工厂GetControllerType使用它们。 2)有没有办法在应用程序中使用它? 例如,如果我想列出应用程序中的所有控制器,使用此文件意味着我不必通过reflection自己找到它们。 还应该知道如何/何时更新方法GetControllerType(requestContext, controllerName); 将根据它在此文件中找到的内容返回您的控制器类型。 知道何时更新以及是否可以依赖它可能会改变您从驻留在自己的程序集中的插件/模块注册控制器的方式。 我主要是纯粹出于兴趣而问。

覆盖entity framework实体属性

我在EF中有一个名为Profile的实体,我想将数据注释属性添加到该实体的“FirstName”属性中,所以我创建了一个新的分部类,如此; public partial class Profile : EntityObject { [Required] [Display(Name = “First Name”)] [EdmScalarPropertyAttribute(EntityKeyProperty = false, IsNullable = false)] [DataMemberAttribute()] override public global::System.String FirstName { get { return _FirstName; } set { OnFirstNameChanging(value); ReportPropertyChanging(“FirstName”); _FirstName = StructuralObject.SetValidValue(value, false); ReportPropertyChanged(“FirstName”); OnFirstNameChanged(); } } } 但我得到了这个; The type ‘CC.Models.Profile’ already contains a definition for ‘FirstName’ 有任何想法吗? 问候, […]

Html.BeginForm在IE浏览器中发布HttpGet动作而不是HttpPost,在Chrome和Firefox中很好

我的Razor视图中有以下内容: @using (Html.BeginForm(“Edit”, “MyController”, FormMethod.Post)) {   @Html.ValidationSummary(false) @Html.EditorFor(x => x.Role, MVC.Shared.Views.EditorTemplates.KeyValuePairSelectList, new { SelectListOptions = Model.RoleSelectList }) @Html.EditorFor(x => x.Trust, MVC.Shared.Views.EditorTemplates.KeyValuePairSelectList, new { SelectListOptions = Model.TrustSelectList.OrderBy(x => x.Text) }) @Html.EditorFor(x => x.GmcCode) } 在我的控制器中我有 [HttpGet] public virtual ActionResult Edit(string id) { } [HttpPost] public virtual ActionResult Edit(ViewModel viewModel) { } 在Firefox和Chrome中,一切正常,但在IE中提交表单时,HttpGet操作被触发而不是HttpPost。 调用堆栈或IE开发人员工具控制台中没有线索。 有什么明显我错过了吗?

如何防止MVC3上的多个post?

用户想要在他的博客中发帖,他填写该字段并单击submit 。 该网站运行缓慢,他再次点击,再次点击。 它终于被保存了,但现在他检查了他的post并看到了4个post。 我怎样才能防止这种情况发生? 如果用户点击提交一次我想对下次点击do nothing或abort previous并开始新post,无论哪个更有意义或推荐。 在一个表格中 @using (Ajax.BeginForm(…)) { }

如何测试PARTIAL视图是在C#ASP .NET MVC中呈现的

我有一个视图,它内部有部分视图渲染: @Html.RenderPartial(“partial”, Model.SomeModelProperty); 还有一个控制器,它返回这个视图 public ActionResult Action() { … var model = new SomeModel(){SomeModelProperty = “SomeValue”} return View(“view”, model); } 如何测试视图呈现我知道: [TestMethod] public void TestView() { … var result = controller.Action(); // Assert result.AssertViewRendered().ForView(“view”).WithViewData(); } 但是当我打电话的时候 result.AssertPartialViewRendered().ForView(“partial”).WithViewData(); 我收到此错误消息 Expected result to be of type PartialViewResult. It is actually of type ViewResult. 我究竟做错了什么?

如何在mvc3 asp.net中的表单提交上发送文本框值作为参数

我在MVC3中创建了局部视图。 现在我想按下提交按钮发送文本框值作为表单提交的参数 我的部分观点是这样的 @using (Html.BeginForm(“Searching”, “AccountManager”, FormMethod.Post, new { name =”Wat should i put here” })) { } 我的控制器就像 public viewResult Searching(string name) { // bussiness logic return view(); }

Ajax.BeginForm(),OnSuccess – 获取事件目标

我无法获得在Ajax.BeginForm()触发OnSuccess()方法的元素的目标。 所以这是代码片段: @using (Ajax.BeginForm(“InsertModel”, “Home”, new AjaxOptions { HttpMethod = “POST”, OnSuccess = “doWork(this,’SomeCustomText’)” })) { } function doWork(e,customText) { alert(customText); //It shows ‘SomeCustomText’, so its good. alert(e); //[Object] object alert(e.prop(“tagName”)); //Object # has no method ‘prop’ alert(e.attr(“tagName”)); //Object # has no method ‘attr’ alert(jQuery(e).html()); //undefined alert(jQuery(e).prop(“tagName”)); //undefined alert(e.target); //undefined alert(jQuery(e).target); //undefined } 问题: 如何获得目标?! […]

在最近的工具更新失败并添加依赖性错误后添加Controller

由于安装MVC3的最新工具更新,通过“添加控制器”上下文菜单添加控制器通常会失败并显示错误: 无法加载文件或程序集“Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一个依赖项。 该系统找不到指定的文件。 或者是simimlar(有时是另一种依赖,例如“Mono.Addins”等)。 它所引用的引用不是项目直接需要的,而是由该项目的其他引用引用。 项目构建find没有引用,但Add Controller失败。 添加错误中提到的引用也不能解决此问题。 即使添加了对Newtonsoft.Json的引用(使用正确的版本和令牌),错误仍然存​​在。 我怀疑这是由于“添加控制器”对话框的reflection提供了可以使用的模型类型列表,但我无法理解为什么即使在添加请求的引用之后它仍然存在错误。 “添加视图”对话框略胜一筹,但仍然失败。 对话框打开,但是当您勾选“创建强类型视图”时,对话框会立即关闭。 目前我的工作是手动添加控制器,并添加非强类型视图并在之后手动编辑它们,但这变得非常令人沮丧 – 特别是因为我无法利用我们的客户T4模板来构建脚手架视图和控制器。 自更新以来其他任何人都经历过这种情况并知道如何修复它?

ActionLinks的MVC动态路由值

我需要使用ActionLink链接到我的ViewModel A的编辑屏幕。 A有一个复合键,所以要链接到它,路由值必须有3个pramaters,如下所示: 如您所见,路由值包含控制器Action将接受的ID。 我希望能够从辅助函数生成路由值,如下所示: public static Object GetRouteValuesForA(A objectA) { return new { long Id1= objectA.Id1, long Id2= objectA.Id2, long Id3= objectA.Id3 }; } 然后在ActionLink助手中使用它,但我不知道如何将该结果传递给ActionHelper objectA = new A(){Id1= objectA.Id1,Id2= objectA.Id2,Id3= objectA.Id3}; …. 但是,这需要控制器操作接受匿名类型而不是3个属性的列表 我看到下面的链接合并匿名类型,但有没有其他方法来做到这一点? 合并匿名类型

带有枚举的MVC3 RadioButtonFor

我遇到了HtmlHelper,RadioButtonFor和我模型中的枚举问题。 我有一个强类型视图,我希望复选框切换我的枚举属性。 Enum.cs public enum Values{ Value1, Value2 } Model.cs public class Model{ public Values MyProp{ get; set; } ; View.cshtml @Html.RadioButtonFor(model => model.MyPropi, Values.Values1) Controller.cs public ActionResult WizardFirstStep() { var model = new Model(); return View(model); } 如果我在控制器中设置MyProperty值,则按预期检查RadioButton。 但是在发送到下一个向导步骤后,将模型作为参数,该属性未设置。 如果它能帮助你理解我的意思:如果它是C#和WPF我将使用IValueConverter。 顺便说一句:我使用HtmlHelper.ActionLink将模型送到控制器。 提前致谢