小编Mon*_*ome的帖子

如何在ASP.NET MVC的一个视图中使用多个模型?

我在SO上读过类似的问题,但似乎无法弄清楚这个问题,这个问题特定于DBContext对象(我认为).这里有一些虚拟代码来说明.

我的Index()操作中有以下代码:

    public ActionResult Index()
    {
        AnimalDBContext db = new AnimalDBContext();

        return View(db.Dogs);
    }
Run Code Online (Sandbox Code Playgroud)

我的模型有以下代码:

    public class Dog
    {
        public int ID { get; set; }
        public string name { get; set; }
        public string breed { get; set; }
    }

    public class AnimalDBContext : DbContext
    {
        public DbSet<Dog> Dogs { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,我有以下几点:

@model IEnumerable<AnimalProject.Models.Dog>
    @foreach (var d in Model)
    {
    <h3>@d.name</h3>
    <h2>@d.breed</h2>
    }
Run Code Online (Sandbox Code Playgroud)

一切都很好,视图将遍历我的数据库中的每只狗.但是,我在同一视图中有另一组我想要的DBContext数据.我希望能够枚举数据库中该表的每个项目.

这就是我想要的,如果你抓住我的漂移:

@model IEnumerable<AnimalProject.Models.Dog>
@model IEnumerable<AnimalProject.Models.Cat>
    @foreach (var d in Dog)
    {
    <h3>@d.name</h3> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework

7
推荐指数
1
解决办法
2万
查看次数

nginx try_files 带有 s3 存储桶和 proxy_pass 用于不带扩展名的 html 页面

我有一个 s3 存储桶,其中包含目录和 html 文件。我在存储桶前面使用 nginx,并为存储桶配置了 proxy_pass,效果很好。我想要没有 html 扩展名的干净 URL,并且这些 URL 能够正确解析。例如,foo.com/bar/my-file-name.html必须可以在以下位置访问它,而不是foo.com/bar/my-file-name

这里的主要问题是如何防止每个 URL 末尾都需要 .html。例如,我希望 nginx 处理路由每个请求并尝试查找扩展名为 .html 的文件,然后返回它。

我的问题是我不知道如何强制 nginxtry_files像我在非 S3 站点上那样。当我尝试添加 的任何配置时try_files,它会在所有路径上返回 HTTP 500 错误,从而破坏站点。

为了进行比较,以下配置在非 S3 支持的站点上运行良好(文件位于服务器本身):

location / {
    try_files $uri $uri/ @htmlext;
}

location @htmlext {
    rewrite ^(.*)$ $1.html last;
}
Run Code Online (Sandbox Code Playgroud)

我的目标是将这种行为复制proxy_pass到 S3 存储桶,并强制它尝试使用 .html 扩展名以外的文件名index.html,这是开箱即用的。

这是我当前的配置,效果很好,减去除以下之外的任何 html 文件index.html

location / {

     proxy_pass my-bucket.s3.blahblah/;
}
Run Code Online (Sandbox Code Playgroud)

nginx amazon-s3

5
推荐指数
0
解决办法
1210
查看次数

Membership.CreateUser的ASP.NET MVC 3单元测试始终返回MembershipCreateStatus错误

我正在尝试编写单元测试来创建新用户并验证是否发生了所需的重定向.这是我的Register动作,它是VS模板中几乎开箱即用的代码:

[HttpPost]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        MembershipCreateStatus createStatus;
        Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

        if (createStatus == MembershipCreateStatus.Success)
        {
            FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError(String.Empty, ErrorCodeToString(createStatus));
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

以下是我的测试,使用Moq.无论我设置什么,我总是从其中一个默认MembershipCreateStatus错误消息中得到错误.例如:

提供的密码无效.请输入有效的密码值

要么

提供的密码检索答案无效

我已经尝试将CreateUser方法更改为仅调用用户名,密码和电子邮件重载,但这并不重要.这就像是在某处执行密码策略的检查.

public void RegisterPost_WithAuthenticatedUser_RedirectsToHomeControllerIfSuccessful()
{
    // Arrange
    var accountController = …
Run Code Online (Sandbox Code Playgroud)

c# tdd unit-testing moq asp.net-mvc-3

2
推荐指数
1
解决办法
3445
查看次数