我目前在我的控制器中有一个方法,它接受表单集合,保存数据,然后在"详细信息"页面中显示数据.目前,代码目前看起来像:
[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不起作用,因为生成的模型不正确.为了提供更多上下文,"创建"操作中的模型包含一个附加值,表示"人员已成功创建",如果我重定向到"详细信息"操作,则此消息不会出现在模型中.
我有一个使用Project Awesome(http://awesome.codeplex.com/)的MVC3应用程序,但我在复选框上得到了一个奇怪的行为.我在Modal弹出窗口中有以下简单的Html<input type="checkbox" class="check-box" name="IsDeleted">
当我提交包含此元素的表单时,其post值为'on'而不是预期的'true'(当选中元素时).
有谁知道这是为什么?我假设可能有一些javascript某处弄乱表单数据,但想检查是否有一些我缺少的HTML.
谢谢
我有一个像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) 我正在尝试创建自己的HTML Helper,它接受一个表达式(类似于内置的LabelFor <>帮助器.我已经找到了在表达式类似于此时获取属性值的示例:
model => model.Forename
Run Code Online (Sandbox Code Playgroud)
但是,在我的一些模型中,我想获取子元素中的属性,例如
model => mode.Person.Forename
Run Code Online (Sandbox Code Playgroud)
在这些例子中,无论如何我都找不到(轻松)获取Forename的值.任何人都可以建议我应该如何获得这个价值.
谢谢
我目前正在从 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
我的模型上有以下属性
[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属性(可以理解),没有设置为限制文本框大小.我的答案是我应该如何获取在模板中设置的属性?
谢谢
最近我一直在努力改进我的单元测试,并且真正让我感到困惑的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) 我编写了以下代码,我试图确定泛型类类型是否继承自基类.我认为这更容易解释我在代码中做了什么.有人可以提供一些有关如何解决这个问题的见解.
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# ×5
asp.net-mvc ×4
asp.net ×3
html ×2
.net ×1
amazon-eks ×1
generics ×1
html-helper ×1
javascript ×1
jquery ×1
kubernetes ×1
lambda ×1
terraform ×1
unit-testing ×1