问题标签 [asp.net-mvc-futures]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 具有区域和重复控制器名称的 MVC 期货强类型 RenderAction
我正在尝试使用 MVC Futures 库中强类型的 Html.RenderAction
我试图从我的 Site.Master 调用我的主 HomeController (area = "") 上的导航操作
在我将另一个 HomeController 添加到我的 Admin 便携式区域之前,这非常有效。然后我开始出现以下错误:
找到了与名为“Home”的控制器匹配的多种类型。如果为该请求提供服务的路由未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由。
'Home' 的请求找到了以下匹配的控制器:Areas.Admin.Controllers.HomeController Web.Controllers.HomeController
我能够通过使用以下非 mvccontrib 强类型 RenderAction 方法解决该问题。我宁愿在页面上没有这个非强类型方法,有没有办法让 mvccontrib 方法接受一个区域,或者让他们知道根据指定的控制器的路由或命名空间生成区域。
我已经添加到我的 global.asax.cs 文件中,以支持具有如下所示默认区域的多个控制器,并且我还验证了这是我的控制器的正确命名空间。
.net - MvcContrib 与 MvcFutures
MvcContrib 和 MvcFutures 之间有什么关系?
看起来 MvcFutures 包含的代码将成为未来 ASP.NET MVC 版本的一部分,而 MvcContrib 是一个不太官方的库,其中包含来自社区的一些功能。我对吗?
asp.net-mvc-3 - 序列化时忽略属性
我正在把头发拉出来。
我正在尝试实现一个多步骤向导,并且我Html.Serialize
在 MVC3 Futures 中使用了 html 助手。这很好用,除了我的模型中的一个属性是SelectList
. 我不希望这个属性序列化(无论如何尝试时它都会爆炸)。
我不能使用[NonSerialized]
,因为它只适用于字段,而不是属性。我什至尝试了其他一些正常的方法,例如[XmlIgnore]
(我认为无论如何都行不通)。
任何人都可以建议一个在使用时会忽略模型中属性的属性Html.Serialize
吗?
编辑:
我尝试序列化时遇到的错误是 InvalidDataContractException。有这样的消息:
无法序列化类型“System.Web.Mvc.SelectList”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。
但是,如果我这样做,那么我必须将所有成员标记为[DataMember]
仅排除 1 个属性,这似乎有点愚蠢。
更新:
一个简单的例子是这段代码(确保添加对 System.Runtime.Serialization.dll 的引用):
测试.cs
家庭控制器.cs
主页/关于.cshtml
这会生成 InvalidDataContractException
c# - 使用自定义模型绑定器的递归模型绑定
我正在尝试使用 .NET MVC 在我的表单中实现向导功能。我遇到了达林·季米特洛夫(Darin Dimitrov )实现这一目标的方法。基本上他有一个向导视图模型,其中包含一个 IStep 列表。每个步骤都有自己的属性和验证。
他在视图上序列化向导(作为一种视图状态),然后将其和当前步骤发布到控制器。因此,向导的每个步骤,您只验证该步骤。如果成功,则增加当前步骤并重复。
在大多数情况下 - 这非常有效。但是,我在验证各个步骤时遇到了一个问题,因为我的一些步骤依赖于之前提交的验证值。
因此,我需要添加一种方法来允许各个向导步骤访问之前的步骤。
我决定这样做的方法是将向导包括在步骤中。
然后在 Darin 提供的模型绑定器中,为 BindModel 添加一个覆盖
这似乎有效,但是在我的控制器中我有一个 ModelStateError:
从类型“System.String”到类型“Wizard”的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。
我认为这是因为模型绑定器试图递归绑定?
有谁知道我该如何解决这个问题?或者 - 我是否正确地接近这个?有一个更好的方法吗?
我把上面所有的都是一个基本的示例项目来说明我遇到的问题。
asp.net-mvc - T4MVC,过时了吗?还好?如果不是还有什么用?
伙计们,
从今天开始,我应该在我的项目中引入 T4MVC 还是使用 MvcContrib 的强类型优势?
或者
试图坚持标准/主流并保持最新。
我知道,这个网站上有问答,我很想听听什么是最新和最棒的,而不是 2 年前的。
提前致谢。
asp.net - 浏览器刷新后 Html.Deserialize 丢失 TempData
我有一个 ASP.NET MVC4 向导。为了逐步传递一个大视图模型,我使用了期货程序集。我序列化我的模型
并在控制器中反序列化它
我在
每个向导步骤都有自己的视图,我使用 RedirectToAction("ActionName") 在控制器中管理上一个/下一个操作
一切正常,只要使用 F5 或菜单没有刷新浏览器。在这一点上,控制器再次被调用。控制器已经有一个模型,尽管 TempData 没有再次保存。
但是缺少两个枚举属性。它们在前面的步骤中使用。他们通过 RadiobuttonFor 绑定到视图。
那么为什么会有一个不完整的模型呢?
在此先感谢 csteinmueller
c# - MVC 4 / Entity Framework 5 / Code First - 在视图中持久化集合(对象列表) - 几个问题
我的项目有几个模型,其中一些与其他模型具有 1:many 关系。一个用户有一个个人资料页面,它被分成几个部分视图——每个视图分组/代表给定模型的特定属性。
例如,如果我想在局部视图中显示给定模型的 10 个属性中的 5 个,并且想要保留未向我正在使用的用户显示的属性,Html.HiddenFor
就像这样
这适用于上面的单条目属性。在 5 个隐藏的成员属性中,其中之一可能是列表。我了解无法使用HiddenFor
. 我遇到了 Mvc Futures 包和Html.Serialize
辅助扩展,但我不完全确定如何使用它,也找不到很多好的信息。
- 一旦将模型传递给视图,与之相关的所有内容(属性、集合)都可供我们访问,例如
Model.Username
. 例如,如果我们不使用HiddenFor
withUsername
,这是否意味着它将被重置为默认值或 null?收藏品也一样吗? - 是否使用
HiddenFor
唯一/最佳方式来保留未向用户显示的模型属性? - 是否使用
Html.Serialize
唯一的方法来持久化未向用户显示的模型集合?其他选择? - 有人可以提供/链接到一个简单的例子,说明如何在类似于我所描述的情况下持久化一个集合?
- 如果我要使用
Html.Serialize
,是否需要对整个模型进行序列化,或者我可以只对集合进行序列化吗?
反馈表示赞赏。
.net - MVC 4 中带有 MVC 4 期货的强类型 ActionLink 的语法是什么?
我在 Visual Studio 2012 中使用新的 MVC 4 Internet 应用程序模板。我已经为 MVC 4 Futures 安装了 Nuget 包。在我的_Layout.cshtml
我正在构建导航菜单。
这有效并构建了正确的 URL:
@Html.ActionLink("客户", "索引", "客户")
这就是我想要的工作,一个强类型的变体:
它对“无法从方法组中选择方法。你的意思是调用一个方法吗?”感到悲伤,但有些事情告诉我这不是真正的问题。
这会编译并输出正确的 HTML,但不是内联的:
如何使用 Razor 的语法(有或没有 Futures)在 MVC 4 中构建强类型的 Action/ActionLink?
c# - Mvc期货序列化问题:SerializationException:反序列化失败
我有一个 asp.net 4.5 应用程序,它是一个向导 UI,最后会生成一个报告。我正在使用 MVC Futures 插件在表单之间序列化和传递模型。我可以一直点击并生成报告。我还按 F5 并刷新,它将重新发布上一个请求中的表单数据并重新加载表单。
我的问题是有时,通常在等待几分钟后,如果我再次尝试在页面上按 F5,而不是重新生成报告,我会收到以下错误:
SerializationException:反序列化失败。
似乎浏览器可能以某种方式忘记了先前的请求,并试图在不重新提交表单的情况下刷新页面。关于发生了什么的任何想法?我将尝试通过立即重新提交表单来重现此问题,然后等待几分钟并再次执行此操作,并使用 Fiddler 观看每次发布的内容。
有人对这里可能出现的问题有任何想法吗?
更新(2014 年 1 月 3 日):
这是生成报告的 post 方法:
视图页面本身并没有什么特别之处。它甚至没有序列化对象。那是在上一个评论页面中。我可以发布该页面的一部分:
全栈跟踪:
“/”应用程序中的服务器错误。
你调用的对象是空的。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。
源错误:在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[NullReferenceException:对象引用未设置为对象的实例。] System.Web.Security.MachineKey.Decode(String encodedData, MachineKeyProtection protectionOption) +268 Microsoft.Web.Mvc.MachineKeyWrapper.Decode(String encryptedData, MachineKeyProtection protectionOption) + 41 Microsoft.Web.Mvc.MvcSerializer.Deserialize(String serializedValue, SerializationMode mode, IMachineKey machineKey) +175
[SerializationException:反序列化失败。验证数据是否正在使用与序列化相同的 SerializationMode 进行反序列化。否则请参阅内部异常。] Microsoft.Web.Mvc.MvcSerializer.Deserialize(String serializedValue, SerializationMode mode, IMachineKey machineKey) +384 Microsoft.Web.Mvc.MvcSerializer.Deserialize(String serializedValue, SerializationMode mode) +70 Microsoft.Web. Mvc.DeserializingModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +293 System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +317 System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +117 System.Web.Mvc.Async.<DisplayClass25.b _1e(AsyncCallback asyncCallback, Object asyncState) +446 System.Web.Mvc.Async.WrappedAsyncResult 1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130
System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +302
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__17(AsyncCallback asyncCallback, Object asyncState) +30
System.Web.Mvc.Async.WrappedAsyncResult
1.Begin(AsyncCallback 回调, 对象状态, Int32 超时) +130 System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback 回调,对象状态)+381 System.Web.Mvc.Async.WrappedAsyncResult1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130
System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +317
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +15
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__2(AsyncCallback asyncCallback, Object asyncState) +71
System.Web.Mvc.Async.WrappedAsyncResult
1.Begin(AsyncCallback回调,对象状态,Int32超时)+130 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback回调,对象状态)+249 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,AsyncCallback回调,对象状态)+49 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext 上下文,AsyncCallback cb,对象 extraData)+16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute( ) +301 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155