小编use*_*667的帖子

ASP.NET MVC重定向与模型

我目前在我的控制器中有一个方法,它接受表单集合,保存数据,然后在"详细信息"页面中显示数据.目前,代码目前看起来像:

[HttpPost]
public ActionResult Create(PersonModel person)<br>
{
    if (person.IsValid())
    {
        person.additionalData = "Person created successfully";
        return View("Details", person);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是以这种方式返回Details视图会保留URL mysite/Person/Create - 理想情况下我希望URL为mysite/Person/Details/IdGoesHere.

我相信这一定是可能的.显然,我可以使用Response.Redirect,但是这不允许我将模型传递给视图.据我所知,我无法使用RedirectToAction传递模型?

谢谢您的帮助.

编辑:确认 - "创建"操作生成的模型与"详细信息"操作创建的默认模型不同.因此,直接重定向到Action并传递Id不起作用,因为生成的模型不正确.为了提供更多上下文,"创建"操作中的模型包含一个附加值,表示"人员已成功创建",如果我重定向到"详细信息"操作,则此消息不会出现在模型中.

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

39
推荐指数
4
解决办法
7万
查看次数

HTML输入复选框在提交表单时返回'开'而不是'真'

我有一个使用Project Awesome(http://awesome.codeplex.com/)的MVC3应用程序,但我在复选框上得到了一个奇怪的行为.我在Modal弹出窗口中有以下简单的Html<input type="checkbox" class="check-box" name="IsDeleted">

当我提交包含此元素的表单时,其post值为'on'而不是预期的'true'(当选中元素时).

有谁知道这是为什么?我假设可能有一些javascript某处弄乱表单数据,但想检查是否有一些我缺少的HTML.

谢谢

html javascript jquery

35
推荐指数
3
解决办法
7万
查看次数

Web API Queryable - 如何应用AutoMapper?

我有一个像OData可查询属性一样的简单WebApi方法.

    [Queryable]
    public virtual IQueryable<PersonDto> Get()
    {
        return uow.Person().GetAll()); // Currently returns Person instead of PersonD
    }
Run Code Online (Sandbox Code Playgroud)

我想要做的是在WebAPI将结果转换为JSON之前,使用AutoMapper将查询结果从Person类型转换为PersonDto类型.

有人知道我怎么做吗?我知道,我可以在GetAll()调用之后应用Mapper.Map,然后转换回IQueryable,但这会导致在应用OData过滤器之前返回并映射整个表(不好!).

看来这个问题ASP.NET Web API返回可查询的DTO?包含相同的问题(请参阅第二个响应以获得更好的答案),其中建议使用自定义MediaTypeFormatter在链的末尾使用AutoMapper,但是根据我看到的示例,我不知道如何做到这一点.

任何帮助将不胜感激!

- 更多信息

我已经查看了IQueryable的源代码,但遗憾的是我看不到为此目的使用代码的任何方法.我已经设法编写了一个看起来有效的附加过滤器,但它并不一定不优雅.

public class PersonToPersonDtoConvertAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
    {
        HttpResponseMessage response = actionExecutedContext.Response;

        if (response != null)
        {
            ObjectContent responseContent = response.Content as ObjectContent;
            var query = (responseContent.Value as IQueryable<Student>).ToList();
            response.Content = new ObjectContent<IEnumerable<StudentResource>>(query.ToList().Select(Mapper.Map<Person, PersonDto>), responseContent.Formatter);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我装饰了这样的动作

    [Queryable]
    [PersonToPersonDtoConvert]
    public IQueryable<Person> Get()
    {
        return uow.GetRepo<IRepository<Person>>().GetAll();
    }
Run Code Online (Sandbox Code Playgroud)

.net asp.net asp.net-mvc asp.net-web-api

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

从ASP.NET MVC Lambda Expression获取价值

我正在尝试创建自己的HTML Helper,它接受一个表达式(类似于内置的LabelFor <>帮助器.我已经找到了在表达式类似于此时获取属性值的示例:

model => model.Forename
Run Code Online (Sandbox Code Playgroud)

但是,在我的一些模型中,我想获取子元素中的属性,例如

model => mode.Person.Forename
Run Code Online (Sandbox Code Playgroud)

在这些例子中,无论如何我都找不到(轻松)获取Forename的值.任何人都可以建议我应该如何获得这个价值.

谢谢

html c# asp.net-mvc lambda html-helper

8
推荐指数
3
解决办法
8490
查看次数

使用 Helm 而不是 Terraform 的困惑

我目前正在从 ECS 转移到 EKS,我对 Helm 和 Terraform 之间的分歧感到困惑。

我们目前有一个专门用于 EKS 集群的 Terraform/Packer 存储库。

然后我们为我们的应用程序创建了一个仓库。该应用程序需要一个 AWS RDS 实例和 SQS/SNS。

我的理解是 Helm 不支持 SQS 或其他服务设置,在这种情况下,我质疑为什么在使用纯粹的 Terraform 在 EKS 中部署所有必需的队列/数据库/应用程序非常容易时,我为什么要打扰 Helm?似乎通过引入 Helm,我最终要做的就是在应用设置中为 K8/NonK8 应用设置创建一个不必要的拆分。

我觉得我错过了 Helm 的重点,但我很难弄清楚它是什么?帮我看看我错过了什么!

amazon-web-services kubernetes terraform kubernetes-helm amazon-eks

5
推荐指数
1
解决办法
116
查看次数

EditorFor和StringLength DataAnnotations

我的模型上有以下属性

        [Display(Name = "MyProperty")]
        [StringLength(10)]
        public string MyProperty
        {
            get;set;
        }
Run Code Online (Sandbox Code Playgroud)

以及以下EditorFor模板

<%@ Page Language="C#" MasterPageFile="Template.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Data" runat="server">
    <%= Html.TextBox("", Model)%>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是StringLength属性(可以理解),没有设置为限制文本框大小.我的答案是我应该如何获取在模板中设置的属性?

谢谢

c# asp.net asp.net-mvc data-annotations

4
推荐指数
2
解决办法
2625
查看次数

在此示例中,Microsoft是否有权在每个测试中执行多个断言?

最近我一直在努力改进我的单元测试,并且真正让我感到困惑的UT的"规则"之一是"每次测试的一个断言".

我很想知道人们是否认为MS在断言这个测试方面做了正确的事情(忽略缺乏模拟等).根据我目前的理解,这个例子应该真正执行一个需要测试的每个对象属性的创建调用(而不是一个调用和多个断言).我在做出这个假设时是否正确?

方法取自:http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3testing_topic4

[TestMethod()]
    [DeploymentItem("MvcMusicStore.mdf")]
    [DeploymentItem("MvcMusicStore_log.ldf")]
    public void CreateTest()
    {
            using (TransactionScope ts = new TransactionScope())
            {
                StoreManagerController target = new StoreManagerController();
                Album album = new Album()
                {
                    GenreId = 1,
                    ArtistId = 1,
                    Title = "New Album",
                    Price = 10,
                    AlbumArtUrl = "/Content/Images/placeholder.gif"
                };
                ActionResult actual;
                actual = target.Create(album);
                Assert.IsTrue(album.AlbumId != 0);
                MusicStoreEntities storeDB = new MusicStoreEntities();
                var newAlbum = storeDB.Albums.SingleOrDefault(a => a.AlbumId == album.AlbumId);
                Assert.AreEqual(album.GenreId, newAlbum.GenreId);
                Assert.AreEqual(album.ArtistId, newAlbum.ArtistId);
                Assert.AreEqual(album.Title, newAlbum.Title);
                Assert.AreEqual(album.Price, newAlbum.Price);
                Assert.AreEqual(album.AlbumArtUrl, newAlbum.AlbumArtUrl);
            } …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing

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

确定对象是否为Generic

我编写了以下代码,我试图确定泛型类类型是否继承自基类.我认为这更容易解释我在代码中做了什么.有人可以提供一些有关如何解决这个问题的见解.

public class MyGeneric<T>
{
}

public class MyBaseClass
{
}

public class MyClass1 : MyBaseClass
{
}

static void Main(string[] args)
{
    MyGeneric<MyClass1> myList = new MyGeneric<MyClass1>();

    if(myList.GetType() == typeof(MyGeneric<>))
    {
        // Not equal
    }

    // This is the test I would like to pass!
    if(myList.GetType() == typeof(MyGeneric<MyBaseClass>))
    {
        // Not equal
    }

    if(myList.GetType() == typeof(MyGeneric<MyClass1>))
    {
        // Equal
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics

0
推荐指数
1
解决办法
85
查看次数