我想知道,如果可能的话,使用新的剃刀视图引擎渲染局部的最佳方法.我知道这是当时没有完全完成的事情
现在我使用RenderPage来呈现用户控件:
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
Run Code Online (Sandbox Code Playgroud)
调用RenderPage的页面使用布局(主)页面,其中定义了三个部分:TitleContent,HeadContent和Maincontent.当我尝试从此页面渲染我的语言环境控件时,似乎还需要这些部分 - 它们应该只在调用页面中需要并且存在.我收到以下消息,无论我是否在部分视图中包含这些部分(显然我不想包含这些部分,但它似乎是一个有趣的调试点......).
以下部分已定义,但尚未在布局页面'〜/ Views/Shared/LocaleUserControl.cshtml'上呈现:TitleContent; HeadContent; 搜索Maincontent
我的部分观点如下(改编自以下链接):
@inherits System.Web.Mvc.WebViewPage<LocaleBaseModel>
@using System.Web.UI;
<p>
@Html.LabelFor(model => Model.CountryName)
<br />
@Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"})
</p>
<p>
@Html.LabelFor(model => Model.StateProvince)
<br />
@Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = "text", accesskey="t" })
</p>
<script type="text/javascript">
$(function () {
var countries = $("#CountryName");
var statesprovinces = $("#StateProvince");
countries.change(function () {
statesprovinces.find('option').remove();
var url = '@Url.Action("GetStatesProvinces", "Base")';
$.getJSON(url, { countryId: countries.val() }, …
Run Code Online (Sandbox Code Playgroud) 我想知道在ASP.NET MVC(我正在使用v3 RC)视图中包含SEO内容(如元描述和关键字)的最佳实践,如果有的话.我最初的计划是创建一个动作过滤器,全局应用于动作,从数据存储中提取相关数据并将其作为viewdata传递给视图.
我的问题是:1)您是否预见到这种方法有任何问题?2)还有更合适的方法吗?3)在这里使用什么是合适的数据存储 - 我应该从数据库中提取(或者如果数据可用则缓存),使用资源文件,配置文件等?
提前致谢,
J.P
我正在使用NHibernate,ASP.NET MVC 2.0和StructureMap开始一个新项目,并使用NUnit和Moq进行测试.对于我的每个控制器,我都有一个公共构造函数,其中注入了一个ISession.应用程序本身工作正常,但就单元测试而言,我基本上必须模拟一个ISession才能测试控制器.
当我尝试使用MOQ模拟ISession时,我收到以下错误消息:
中间调用仅支持属性访问
看来我的问题是期待来自框架CreateQuery方法的用户列表,但在谷歌搜索问题之后我现在更清楚了.
我有两个问题:
1)这是模拟依赖注入ISession的错误方法吗?
2)有没有办法修改代码,以便它可以成功返回我的列表
[Test]
public void DummyTest()
{
var mock = new Mock<ISession>();
var loc = new Mock<User>();
loc.SetupGet(x => x.ID).Returns(2);
loc.SetupGet(x => x.FirstName).Returns("John");
loc.SetupGet(x => x.LastName).Returns("Peterson");
var lst = new List<User> {loc.Object};
mock.Setup(framework => framework.CreateQuery("from User").List<User>()).Returns(lst);
var controller = new UsersController(mock.Object);
var result = controller.Index() as ViewResult;
Assert.IsNotNull(result.ViewData);
}
Run Code Online (Sandbox Code Playgroud)
请注意,我很确定我可以创建一个硬编码的用户列表(而不是模拟单个用户并将其添加到列表中),但我想我现在已经保留了代码.
此外,此特定控制器的Index操作基本上执行上面模仿的CreateQuery调用以返回数据库中的所有用户.这是一个人为的例子 - 不要读任何细节.
在此先感谢您的帮助
编辑:在回复以下评论时,我正在添加错误的堆栈跟踪.此外,User类上的所有属性都是虚拟的.
TestCase'Beta.Tests.Unit.Controllers.UserControllerTest.Details_InValidIndex_ReturnsNotFoundView'失败:System.NotSupportedException:在设置的中间调用中仅支持属性访问.不支持的表达式framework.CreateQuery("来自用户").位于Moq.Mock.AutoMockPropertiesVisitor的Moq.ExpressionVisitor.Visit(表达式exp)Moq.Mock.AutoMockPropertiesVisitor.VisitMethodCall(MethodCallExpression m)的Moq.Exkression.Vatitor上的Moq.Mock.AutoMockPropertiesVisitor.VisitMethodCall(MethodCallExpression m)中的Moq.Mock.AutoMockPropertiesVisitor.VisitMethodCall(MethodCallExpression m) Moq.Mock上的Moq.Mock.GetInterceptor(LambdaExpression lambda,Mock mock)的.SetupMocks(表达式表达式).<> c__DisplayClass12
2.<Setup>b__11() at Moq.PexProtector.Invoke[T](Func
1函数)在Moq.Mock.Setup [T1,TResult](模拟模拟,表达式1 expression) at Moq.Mock
1.Setup …
微软的AntiXSS库已经被打破了6个月,看起来已经放弃了(可能是也可能不是正式).由于先前版本存在安全问题,因此回滚到早期版本是不安全的.在使用Microsoft(特别是MVC)堆栈时,是否有任何针对AntiXSS和Web安全的积极开发的替代方案?
我想知道是否可以使用Automapper将多个DTO对象映射到单个ViewModel对象?
本质上,我有多个DTO对象,并希望在ASP.NET MVC 2.0中的单个屏幕上显示每个对象的信息.为此,我想将DTO对象(或其中的一部分......)展平到Viewmodel中,并将所述viewmodel传递给视图.如果我有一个DTO,这将很容易,但我从未见过它是用多个完成的.显然,有很多迂回的方法可以做到这一点(在automapper之外),但这是我想采取的方法,如果可能的话.
我正在使用ActionFilter来确定用户是否可以在执行操作之前访问特定资源,例如Account对象(la Rhino Security).这是一个全局过滤器,如果授权值失败,它会重定向到错误页面
我正在使用以下代码,它适用于整页请求:
filterContext.Controller.TempData["ErrorMessage"] = string.Format("You are not authorized to perform operation: {0}", operation);
filterContext.Result = new RedirectResult("~/Error/AuthorizationError");
Run Code Online (Sandbox Code Playgroud)
Ajax请求我不想应用重定向,而是返回错误消息.有没有办法告诉动作过滤器内部,如果这是一个AJAX请求或常规整页(抱歉不确定正确的术语)请求?
提前致谢
J.P
我想知道是否可以在ASP.NET MVC 2中创建自定义强类型HTML Helper?创建一个常规(读取非强类型)帮助器很简单,但我很难创建强类型版本.例如,我想创建一个DatePickerFor html帮助器...
任何指导或片段将不胜感激,谢谢你提前!J.P
我从nuget升级了我的microsof-web-helpers包,它本身依赖于facebook和twitter API.现在,当我的应用程序尝试运行时,我收到以下错误:
编译器错误消息:CS0246:找不到类型或命名空间名称'SimpleMembershipProvider'(您是否缺少using指令或程序集引用?)
Source Error:
Line 216: }
Line 217:
Line 218: private static SimpleMembershipProvider GetMembershipProvider() {
Line 219: var provider = Membership.Provider as SimpleMembershipProvider;
Line 220:
Source File: c:\Users\jp\documents\visual studio 2010\projects\myproj\myproj\App_Code\Facebook.cshtml Line: 218
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人遇到过这个问题,可以告诉我是否需要在项目中添加任何其他引用,或者更糟糕的是,在我的应用程序中创建一个虚拟的SimpleMembershipProvider.我对更新facebook代码犹豫不决,因为无论何时我从nuget获得最新的microsoft-web-helpers,我都会被迫维护这个文件.
谢谢
J.P
在使用Visual Studio执行本地构建时,是否可以使Resharper自动在解决方案中自动运行所有单元测试?我相信NUnit有一个选项"重新运行最后一次测试运行"但我没有通过Resharper或VS看到这样的选项.
提前致谢
J.P
[编辑]这可能或不重要,但我应该指出,我是一个单人团队,编写一个中型应用程序.
ASP.NET MVC 3(最终版)今天发布.当这个版本处于起步阶段时,我记得在codeplex上阅读正在考虑的环形缓存.有谁知道这是否成为V3?我似乎无法找到任何信息,所以我只能(遗憾地)认为它没有发生.
c# ×6
asp.net-mvc ×4
.net ×3
asp.net ×2
razor ×2
unit-testing ×2
automapper ×1
caching ×1
html-helper ×1
moq ×1
nhibernate ×1
nuget ×1
nunit ×1
resharper ×1
security ×1