我正在尝试显示所有用户的列表,但我不确定如何使用MVC模型进行此操作.
我可以通过该Membership.GetAllUsers()方法获取所有用户的列表,但是如果我尝试将其传递给视图ActionResult,我被告知Model不可枚举.
?:当与从单个基类型继承的两种类型一起使用时,条件运算符()如何不起作用?
我的例子是:
ActionResult foo = (someCondition)?
RedirectToAction("Foo","Bar") :
Redirect(someUrl);
Run Code Online (Sandbox Code Playgroud)
长形式可以正常工作:
ActionResult foo;
if(someCondition)
{
foo = RedirectToAction("Foo","Bar");
}
else
{
foo = Redirect(someUrl);
}
Run Code Online (Sandbox Code Playgroud)
两种返回类型,RedirectToRouteResult 并且RedirectResult继承自ActionResult.
所以我看到有可能有一个方法签名,其中第一个参数提供默认值,第二个参数是params集合.
我看不到的是实际使用第一个参数的默认值的方法.
它可能吗?
示例方法:
void WaitAllTasks(string message = "Running Task.WaitAll", params Task[] tasks);
我最初尝试在调用方法时省略message参数,并尝试使用命名参数,这与params不兼容.
它编译,但是可以使用它吗?
我最近在工作中更新了我的MVC 2项目以使用区域,但是我对该RedirectToAction方法有一点问题.
我们的区域之外还有一些控制器等.这些控制器包括Home控制器等.
如何RedirectToAction从区域内部到区域外的控制器执行操作.
我认为以下内容可能会起作用但不会:
return RedirectToAction("Index", "Home", new { area = "" });
Run Code Online (Sandbox Code Playgroud)
要么
return RedirectToAction("Index", "Home", new { area = null });
Run Code Online (Sandbox Code Playgroud) 我一直在和Brian Beckman一起观看这个MSDN视频,我想更好地理解他说的话:
每个不完美的程序员都经历了这个学习阶段,可以用表查找替换函数
现在,我是一名从未上过大学的C#程序员,所以也许在某个地方,我错过了其他人学会理解的东西.
Brian的意思是:
函数可以用表查找替换
是否有这方面的实际例子,是否适用于所有功能?他给出了我能理解的sin函数的例子,但是我如何用更一般的术语来理解它?
在ASP.NET MVC 2中,条目的生命周期TempDataDictionary只是一个HTTP请求.
这转化为在一个请求中设置值,重定向,并且可以访问该行另一端的相同项目.在此之后,无论您是否从行的后端读取字典中的值,该条目将不再可用.
自从ASP.NET MVC 3(我相信)以来,这个实现细节发生了很大的变化.
TempDataDictionary现在只有在阅读后才会删除条目.
MVC 4
public object this[string key]
{
get
{
object obj;
if (!this.TryGetValue(key, out obj))
return (object) null;
this._initialKeys.Remove(key);
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
和
public bool TryGetValue(string key, out object value)
{
this._initialKeys.Remove(key);
return this._data.TryGetValue(key, out value);
}
Run Code Online (Sandbox Code Playgroud)
MVC 2:
public object this[string key] {
get {
object value;
if (TryGetValue(key, out value)) {
return value;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
和
public bool TryGetValue(string key, out object value) { …Run Code Online (Sandbox Code Playgroud) 在创建方法时,是否应该将在该方法中实例化的每个对象作为参数传入,以便可以在单元测试中模拟这些对象?
我们在工作中有很多方法,没有相关的单元测试,也没有回顾性地编写测试; 我们发现在这些方法中实例化了很多对象.
我们的一个选择是将我们当前的方法重构为更像单元的方法,并减少每个方法的责任数量.这可能是一个漫长的过程,但对我们来说肯定是一个很大的好处.
你怎么看?是否应将在方法中实例化的所有对象作为参数传入?
我正在开发一个新的ASP.NET MVC 2.0应用程序,并希望使用新的ASP.NET 4编码块.
我的视图代码包含 <%: Model.ActivityName %>Visual Studio报告:
意外的标记
在:(冒号)的位置.当我运行应用程序时,我得到以下编译错误:
编译器错误消息:CS1525:无效的表达式术语':'
我错过了什么?
欢呼任何帮助/建议.
更新2
好的 - 所以看起来我的问题再次稍微改变:-)
我现在意识到UrlHelper.Action似乎没有正确解析任何区域中的URL,除非明确指定了区域名称.如果没有指定它似乎返回我们当前所在的任何区域名称,这使得它看起来像是从站点的一个部分起作用,但是然后另一个区域中的相同链接解析为错误的区域名称.
要么我做了一些时髦的事情要么做到这一点,要么我不太了解这个Action方法是如何工作的.
更新1
我可以通过以下方式完成这项工作:
return helper.Action("add", "product",new {area = "storemanagement"});
Run Code Online (Sandbox Code Playgroud)
这稍微改变了我的问题.
为什么MVC路由不会消除具有相同名称的控制器的歧义并解析为指定了action方法的控制器?
原创帖子
嘿大家,
我在UrlHelper类上创建了一个辅助方法,并且其中一个路由遇到了一个小问题.
这是有问题的辅助方法的代码:
public static string AddProduct(this UrlHelper helper)
{
return helper.Action("add", "product");
}
Run Code Online (Sandbox Code Playgroud)
我基本上有两个名为"product"的控制器,它们位于站点的不同区域.其中一个用于浏览产品,另一个用于产品管理.只有一个产品控制器包含一个操作方法"添加".
当我输出AddProduct的值
<%: Url.AddProduct() %>
Run Code Online (Sandbox Code Playgroud)
区域名称将解析为我正在浏览的当前区域,而不是包含Add操作方法的产品控制器的正确区域.
我需要在路线中设置一些东西吗?我不确定路由如何与UrlHelper.Action一起使用,所以我不知道是否有可能做我正在尝试的事情.
欢呼任何帮助.
我正在写一些单元测试,我想知道模拟它是否有利Cache,如果是,如何?
目前在我的测试中,我正在嘲笑HttpContextBase并将其包装在自定义中HttpContextFactory:
var mockedHttpContextBase = new Mock<HttpContextBase>();
IHttpContextFactory httpContextFactory = new HttpContextFactory
{
Current = mockedHttpContextBase.Object
};
Run Code Online (Sandbox Code Playgroud)
当我的代码消耗时,我会IHttpContextFactory在执行任何操作之前检查缓存是否为空.
var cache = _httpContextFactory.Current.Cache;
Func<SomeReturnType> doSomeWork = () => _foo.someMethodIExecute(param1,param2);
return cache != null ? cache.GetOrStore("doSomeWorkCacheKey",doSomeWork, 900)
: doSomeWork.Invoke();
Run Code Online (Sandbox Code Playgroud)
每次我使用它时检查缓存是否为空是否正确,或者您是否也在测试中模拟缓存,以便在运行单元测试时它不为空?