我DropDownListFor在我的MVC3应用程序中遇到了麻烦.我能够使用StackOverflow来弄清楚如何让它们出现在View上,但现在我不知道在提交时如何捕获视图模型中相应属性中的值.为了使其工作,我必须创建一个具有ID和value属性的内部类,然后我必须使用a IEnumerable<Contrib>来满足DropDownListFor参数要求.但是,现在,MVC FW应该如何将在此下拉列表中选择的值映射回我的视图模型上的简单字符串属性?
public class MyViewModelClass
{
public class Contrib
{
public int ContribId { get; set; }
public string Value { get; set; }
}
public IEnumerable<Contrib> ContribTypeOptions =
new List<Contrib>
{
new Contrib {ContribId = 0, Value = "Payroll Deduction"},
new Contrib {ContribId = 1, Value = "Bill Me"}
};
[DisplayName("Contribution Type")]
public string ContribType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的视图中,我将下拉列表放在页面上,如下所示:
<div class="editor-label">
@Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId,
new …Run Code Online (Sandbox Code Playgroud) 我需要为ASP.NET MVC 2.0网站创建单元测试.该站点使用Windows身份验证.
我一直在阅读有必要为处理HttpContext的代码模拟HTTP上下文.我觉得我也开始处理DI模式了.(为类提供类型为IRepository的属性,然后在实例化控制器时传入Repository对象.)
但是,我不明白的是通过User.Identity模拟Windows Principal对象的正确方法.这是HttpContext的一部分吗?
是否有任何正文链接到展示此内容的文章(或推荐书籍)?
谢谢,
特雷卡罗尔
我遇到了IE缓存操作方法结果的问题.
我发现的其他文章与安全性和[授权]属性有关.这个问题与安全性无关.
这是一个非常简单的"记录投票,抢平均值,返回平均值和投票数"的方法.关于它的唯一有趣的事情是它通过Ajax调用并返回一个Json对象.我相信它是被缓存的Json对象.
当我从FireFox运行它并使用Firebug观察XHR流量时,一切都运行良好.但是,在IE 8下,"throbber"图形没有时间显示,显示使用jQuery注入页面的"新"平均值和计数的页面元素永远不会有所不同.
我需要一种方法告诉MVC永远不要缓存这个动作方法.
本文似乎解决了这个问题,但是我无法理解它: 防止在ASP.NET MVC中缓存属性,每次执行一个Action时都强制执行属性
我需要更多的上下文来解决方案,以了解如何扩展AuthorizationAttribute.请解决您的答案,就好像您正在与对MVC缺乏深入了解的人交谈,即使这意味着回复了一篇关于某些必要基础/先决条件的文章.
谢谢,
特雷卡罗尔
我正试图找到一个好方法,累积应用最多5个Func到同一个IEnumerable.这是我想出的:
private Func<SurveyUserView,bool> _getFilterLambda(IDictionary<string, string> filters)
{
Func<SurveyUserView, bool> invokeList = delegate(SurveyUserView surveyUserView)
{
return surveyUserView.deleted != "deleted";
};
if (filters.ContainsKey("RegionFilter"))
{
invokeList += delegate(SurveyUserView surveyUserView)
{
return surveyUserView.Region == filters["RegionFilter"];
};
}
if (filters.ContainsKey("LanguageFilter"))
{
invokeList += delegate(SurveyUserView surveyUserView)
{
return surveyUserView.Locale == filters["LanguageFilter"];
};
}
if (filters.ContainsKey("StatusFilter"))
{
invokeList += delegate(SurveyUserView surveyUserView)
{
return surveyUserView.Status == filters["StatusFilter"];
};
}
if (filters.ContainsKey("DepartmentFilter"))
{
invokeList += delegate(SurveyUserView surveyUserView)
{
return surveyUserView.department == filters["DepartmentFilter"];
};
}
return invokeList;
}
Run Code Online (Sandbox Code Playgroud)
我认为它会以累积方式应用这些,但是,我可以从结果中看出它实际上只是应用了最后一个(DepartmentFilter).
有2 …
Regex rx = new Regex(@"(?<!\\\\),");
String test = "OU=James\\, Brown,OU=Test,DC=Internal,DC=Net";
Run Code Online (Sandbox Code Playgroud)
这很完美,但我想了解它.我一直没有成功.有人可以给我一个单词或短语,我可以用它来查看并理解它.
我原以为它应该写成这样:
new Regex(@"(\\\\)?,");
Run Code Online (Sandbox Code Playgroud)
我以前见过这个(?zzzzzz)语法.这<!是我被困扰的部分.
我正在四处学习如何对ASP.NET MVC控制器操作进行单元测试.具体来说,我正在尝试模拟ControllerContext,以便我可以测试访问HttpContext.Current.User.Identity.Name的操作.
我正在使用Moq.
在我打开MockBehavior.Strict之前,事情进展顺利.我知道如果代码无法调用我标记为Verifiable的东西,这会抛出异常.显然,如果我没有提供设置(如IsChildAction)的"额外"方法不被调用,它也会抛出异常.
[TestMethod]
public void Index_Get_AccessesUserIdentityName()
{
// Arrange
var mock = new Mock<ControllerContext>(MockBehavior.Strict);
mock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns("treycarroll").Verifiable();
HomeController controller = new HomeController();
controller.ControllerContext = mock.Object;
// Act
ViewResult result = controller.Index() as ViewResult;
// Assert
mock.Verify();
...
}
Run Code Online (Sandbox Code Playgroud)
这是我正在测试的Controller操作:
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!"+User.Identity.Name;
return View();
}
Run Code Online (Sandbox Code Playgroud)
返回View()时触发异常; 声明被执行.错误消息告诉我,我需要一个调用IsChildAction的设置方法,所以我将我的测试类更新为:
[TestMethod]
public void Index_Get_AccessesUserIdentityName()
{
// Arrange
var mock = new Mock<ControllerContext>(MockBehavior.Strict);
string expectedUserName = "treycarroll";
mock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(expectedUserName).Verifiable();
mock.SetupGet(m => m.IsChildAction).Returns(true).Verifiable();
HomeController controller …Run Code Online (Sandbox Code Playgroud)