问题标签 [asp.net-mvc-4]

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.

0 投票
6 回答
3706 浏览

asp.net-mvc-3 - MVC 2 / MVC 3 / MVC 4 中的嵌套区域

从 MVC 2 开始,我们可以轻松创建区域。现在我的问题与嵌套区域(区域内的区域)有关。

选择我的“ father”区域文件夹,鼠标右键单击 > Add> NO 选项new Area

是否有可能以其他方式做到这一点?或者这个选项会在不久的将来提供吗?

0 投票
3 回答
24199 浏览

asp.net-mvc - Razor actionlink 在 URL 中自动生成 ?length=7?

我在剃须刀页面上有以下链接:

它出现在视图页面的源代码中,如下所示:

当我点击链接时,URL 是这样的:

我不想?length=7。为什么会自动生成这个?

0 投票
6 回答
75432 浏览

asp.net-mvc - ASP.NET MVC 剃刀串联

我正在尝试使用 Razor 视图引擎呈现如下所示的 HTML 列表:

我试图用来呈现此列表的代码是:

解析器令人窒息,因为它认为 id 属性中下划线右侧的所有内容都是纯文本,不应该被解析。我不确定如何指示解析器呈现 TheItemId。

我不想在包含 item_ 前缀的模型对象上添加一个属性。

我还必须保留此语法,因为我将列表与 JQuery Sortable 和需要将 id 属性格式化为此语法的序列化函数一起使用。

0 投票
3 回答
2487 浏览

asp.net-mvc - 减小 asp.net mvc 控制器的大小

我有一个控制器。“订单控制器”。目前是1800行。我喜欢缩小尺寸。我正在使用静态辅助方法,这很好,但我使用 ninject 来调用我的存储库,因此在不传递属性的情况下无法访问静态方法中的存储库。

有哪些降低控制器噪音的好方法?

0 投票
2 回答
2264 浏览

asp.net-mvc - 动态对象的 MVC3/4 安全和模型绑定

我真的需要对这个问题进行第二次观察,所以我希望你们中的一些人能给我一些反馈,我想我已经盯着它太久了。

我正在尝试使用 ASP.NET MVC3 设置一个网站,在这个网站中我需要创建动态对象的灵活性。但我的意思是在我的数据库中设置了一系列表来存储有关这些动态对象中包含的结构和数据的信息。我正在使用一个预先存在的数据库,所以我(在一定程度上)我可以修改的内容是有限的。当我在数据库中查询一个动态对象(不是 .NET 4.0 的动态对象)时,我传入了我的 Id,我得到的是一个简单的对象,它可能有一些属性,这些属性仅供内部使用,还有一个属性是一个集合,其中包含我的动态对象的所有属性。因此,如果我的动态对象是针对具有 Name、DoB 和 Sex 的人,那么我的集合将包含三个对象,每个属性一个。这允许站点管理员在运行时添加新字段,并且网站将自动呈现它们,允许更新等。现在我的模型绑定当前可以用于此数据结构的显示和回发,对于集合中的每个对象,我渲染两条数据,属性的唯一 ID(目前是隐藏字段,Id 是 Guid)和属性的值。我的问题是安全方面。

如果我正在处理强类型对象,我可以创建自定义 ViewModel 并完成它,或者将 Bind() 属性添加到操作的签名中,但由于这些对象的属性是灵活的集合,我不知道如何处理它。操作级别的安全性很简单,我可以创建一个自定义的 Authorize 属性并查询数据库的权限,但我需要能够限制集合行为以根据用户权限显示和接受信息。例如,如果我要为 person 对象添加一个社会安全号码属性,我不希望它为某些人呈现到屏幕上。但是因为属性是可以在运行时改变的,所以权限也可以。

就我的想法而言,这就是我所处的位置......

因此,我需要一种方法来确定属性集合中的哪些对象可以呈现到屏幕或绑定到回发,具体取决于用户权限。对于显示对象,我认为我别无选择,只能以某种方式将权限包含在 ViewModel 对象中,并在用于属性集合中的对象类型的 DisplayTemplate 中查询这些权限。或者我可以编写某种自定义 ModelBinder,因为它用于调用 Html.Display() 和 Html.Editor() 并考虑过滤 ModelBinder 内的列表。

不过,我对回发也有类似的问题。当它被发回时,我有一组数据被传回,只有一个 Guid 和一个值。但是我需要确保用户没有将自己的字段注入到表单中,并且我还需要确保对于传递回操作的属性,用户具有足够的权限。理想情况下,我想将此检查集成到模型绑定中,并在可能的情况下重用从 MetaData 填充的一些信息,例如,这样它就可以简单地忽略传入的用户无权更改的数据,或者如果不这样做,请检查用户是否有权访问他们尝试在处理回发的操作开始时完成的 IsValid 检查中设置的所有属性。

然后是 MetaData 的动态构建,用于根据数据库中的信息为每个属性调用 Html.Display() 和 Html.Editor(),因为我没有物理属性是我可以装饰的类数据注释。

问题是,当涉及到覆盖 ModelBinders、ModelMetaDataProviders 或 ModelValidationProviders 之类的默认实现时,我不熟悉 MVC 的内部结构。

您能否就您能想到的实现我所描述的最佳方式提供一些建议,或者如果您知道涵盖此示例的其他文章,我非常希望看到它们,但我对 Google 的运气并不好到目前为止,关于这个特定主题。

编辑:有关我所做的全部详细信息,请参阅下面的答案

编辑:我让元数据提供程序工作。只需要实现我自己的类并从 ModelMetadataProvider 继承。

第一部分非常自我解释,首先使用 GetMetadataForType() 填充元数据,方法是传入与从中提取数据的列名称最匹配的 .NET 类型。(我的编辑器模板通过动态选择定义该数据的数据结构中定义的数据所在的列来帮助解决此问题)

使用起来有点奇怪,但就像我说的,它是一个预先存在的数据结构。

在 switch 语句之后是奇怪的地方。据我了解,在 MVC2 中,该GetMetadataForProperty()方法不再将模型本身作为参数并使用 查找属性propertyName,而是传入一个类型的表达式,该表达式Func<object>指向 MVC 需要元数据的属性。这带来了一个问题,因为我需要根模型使用不同的属性来确定结构细节。我在这里找到了另一个解决方案,说您可以使用反射来获取模型,但它需要反射。不是我所希望的,但它有效。在我拥有模型之后,我将到目前为止的元数据和模型传递给一个创建的方法,然后我将从那里设置MVC 使用的对象AddSupplimentalMetadata()的其余属性。DataAnnotationsModelMetadata

现在我只需要找出一种方法来根据用户权限动态选择渲染或不渲染某些属性。我想我可能需要做的是在将模型传递给视图之前过滤属性列表,使用 LINQ 或类似的东西。我不喜欢将业务逻辑放在 Display/EditorTemplate 中的想法。为了保存更改,我仍然需要查看验证系统,看看我是否可以使用该系统来验证用户尝试传递信息的属性。

0 投票
3 回答
3424 浏览

asp.net-mvc - Asp.net MVC Authentication 身份验证是如何工作的

可能是我的问题很疯狂。

1) ASP.net MVC 是无状态的,所以这里不涉及会话。

身份验证模块是如何工作的,您是否有任何文章可以让我了解身份验证基础知识。

存储的认证信息是什么。

【新手MVC】

0 投票
3 回答
31192 浏览

asp.net - 如何在 ASP.NET MVC 中获取对 HttpResponse 的引用?

我正在调用一个第三方库,它需要一个System.Web.HttpResponse. 我看到我有一个HttpResponseBase,但HttpResponse不像网络表单中的那样。

有没有办法得到HttpResponse?使用MVC 3.

[编辑]:我正在尝试在控制器方法中执行此操作。还修正了外壳。

0 投票
3 回答
26412 浏览

asp.net-mvc - Windows 工作流基础 4 和 ASP.NET MVC

我们正在评估 Windows Workflow Foundation 4 以在基于 MVC 3 的 Web 应用程序中使用。我们想为不同的项目创建灵活的订单工作流程。
有人知道有关此类应用程序的一般架构或动手实验室的好信息吗?
一些具体的问题是:

  • 如何从工作流中激活特定的控制器/动作?
  • 在工作流和 Web 应用程序(事件、wcf 服务……)之间进行通信的最佳方式是什么?
0 投票
6 回答
43312 浏览

asp.net-mvc - 如何为 DisplayFor() 创建 MVC Razor 模板

我的视图模型中有几个仅显示的属性,但我需要使用 jQuery 检索它们的值以在页面上执行计算。标准Html.DisplayFor()方法只是将它们的值写入页面。我想创建一个剃刀模板,它允许我将每个元素呈现为:

我知道我可以在Html.DisplayFor()中指定一个模板以使用特定模板来呈现属性,但是在该模板中如何识别要写入span标签的id属性?

0 投票
2 回答
5069 浏览

asp.net-mvc - 在 MVC 3 中跨请求持久化查询字符串

我有一个页面,其中包含一个带有 ActionLink 的客户端列表,允许用户显示(或隐藏)“非活动”客户端。showInactive=True附加到 url 作为控制器的查询字符串。显示“非活动”客户端后,我编辑其中一个,但是当我保存任何更改或返回列表时,查询字符串消失了。在这些请求中保留查询字符串的最佳方法是什么?我已经尝试过 TempData 字典,但显然我试图将它用于它不适合处理的东西。