小编Jam*_*xon的帖子

ASP.NET MVC列出所有用户

我正在尝试显示所有用户的列表,但我不确定如何使用MVC模型进行此操作.

我可以通过该Membership.GetAllUsers()方法获取所有用户的列表,但是如果我尝试将其传递给视图ActionResult,我被告知Model不可枚举.

c# asp.net-mvc asp.net-membership

15
推荐指数
1
解决办法
3万
查看次数

条件运算符不适用于继承相同基类型的两种类型

?:当与从单个基类型继承的两种类型一起使用时,条件运算符()如何不起作用?

我的例子是:

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.

c# asp.net-mvc conditional-operator

12
推荐指数
1
解决办法
432
查看次数

Params后跟可选参数

所以我看到有可能有一个方法签名,其中第一个参数提供默认值,第二个参数是params集合.

我看不到的是实际使用第一个参数的默认值的方法.

它可能吗?

示例方法:

void WaitAllTasks(string message = "Running Task.WaitAll", params Task[] tasks);

我最初尝试在调用方法时省略message参数,并尝试使用命名参数,这与params不兼容.

它编译,但是可以使用它吗?

c# optional-parameters params

12
推荐指数
1
解决办法
3873
查看次数

区域外的RedirectToAction

我最近在工作中更新了我的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)

c# asp.net-mvc-areas asp.net-mvc-2

11
推荐指数
1
解决办法
7894
查看次数

用表查找替换函数

我一直在和Brian Beckman一起观看这个MSDN视频,我想更好地理解他说的话:

每个不完美的程序员都经历了这个学习阶段,可以用表查找替换函数

现在,我是一名从未上过大学的C#程序员,所以也许在某个地方,我错过了其他人学会理解的东西.

Brian的意思是:

函数可以用表查找替换

是否有这方面的实际例子,是否适用于所有功能?他给出了我能理解的sin函数的例子,但是我如何用更一般的术语来理解它?

functional-programming lookup-tables imperative-programming

11
推荐指数
2
解决办法
1690
查看次数

TempData实施更改 - 更改的原因

在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 asp.net-mvc asp.net-mvc-2 asp.net-mvc-4

10
推荐指数
1
解决办法
4760
查看次数

在进行TDD时要模拟哪些对象

在创建方法时,是否应该将在该方法中实例化的每个对象作为参数传入,以便可以在单元测试中模拟这些对象?

我们在工作中有很多方法,没有相关的单元测试,也没有回顾性地编写测试; 我们发现在这些方法中实例化了很多对象.

我们的一个选择是将我们当前的方法重构为更像单元的方法,并减少每个方法的责任数量.这可能是一个漫长的过程,但对我们来说肯定是一个很大的好处.

你怎么看?是否应将在方法中实例化的所有对象作为参数传入?

tdd unit-testing mocking

9
推荐指数
2
解决办法
545
查看次数

HTML编码块 - 无效的表达式术语':'

我正在开发一个新的ASP.NET MVC 2.0应用程序,并希望使用新的ASP.NET 4编码块.

我的视图代码包含 <%: Model.ActivityName %>Visual Studio报告:

意外的标记

:(冒号)的位置.当我运行应用程序时,我得到以下编译错误:

编译器错误消息:CS1525:无效的表达式术语':'

我错过了什么?

欢呼任何帮助/建议.

c# asp.net-mvc-2

8
推荐指数
2
解决办法
7952
查看次数

UrlHelper.Action不会映射到控制器正确的区域

更新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一起使用,所以我不知道是否有可能做我正在尝试的事情.

欢呼任何帮助.

c# asp.net asp.net-mvc-routing asp.net-mvc-2

8
推荐指数
1
解决办法
5942
查看次数

模拟System.Web.Caching.Cache - 模拟或检查null?

我正在写一些单元测试,我想知道模拟它是否有利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)

每次我使用它时检查缓存是否为空是否正确,或者您是否也在测试中模拟缓存,以便在运行单元测试时它不为空?

c# caching unit-testing design-patterns moq

8
推荐指数
2
解决办法
4812
查看次数