小编Mar*_*tin的帖子

ASP Net MVC - 验证消息的本地化

我在asp net mvc 5应用程序中遇到了验证消息本地化的问题.

我用它进行本地化:

路线配置:

[Internationalization]
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute("DefaultLocalized",
        "{language}-{culture}/{controller}/{action}/{id}",
        new
        {
            controller = "Home",
            action = "Index",
            id = "",
            language = "de",
            culture = "DE"
        });

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

LocalizationAttribute:

 class InternationalizationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string language = (string)filterContext.RouteData.Values["language"] ?? "de";
        string culture = …
Run Code Online (Sandbox Code Playgroud)

c# validation asp.net-mvc localization razor

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

ASP Net MVC - 在POST上发送不同的模型

是否可以通过Http-POST将强类型视图中的对象发送到Controller,该Http-POST不等于原始模型的类型.

例如:

我有一个像这样的ViewModel:

public class PersonsViewModel
{
    List<PersonViewModel> persons { get; set; }

    PersonsViewModel() { }
}

public class PersonViewModel
{
    //some properties

    Person() { }
}
Run Code Online (Sandbox Code Playgroud)

现在我有了这个观点:

@model PersonsViewModel

<div>
  @for(int i = 0; i > Model.persons.Count; i++)
{
    @Html.EditorFor(Model.persons[i])
}
</div>
Run Code Online (Sandbox Code Playgroud)

编辑器看起来像这样:

@model PersonViewModel

<div>
     @using (Html.Beginform("Postaction","Controller", FormMethod.Post)){
     <div>
       <!-- properties and textboxes here + submit button -->
     </div>
}
<div>
Run Code Online (Sandbox Code Playgroud)

控制器动作

[ValidateAntiForgeryToken]
        [HttpPost]
        public ActionResult Postaction(PersonViewModel model)
        {
            //do something
        }
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为看起来Controller似乎期待一个PersonsViewModel对象.到目前为止,我的解决方法是创建一个包含所有PersonViewModel的"大"表单,并将完整的PersonsViewModel发送到控制器.

虽然视图是强类型的,但它是否有可能只将一个PersonViewModel传递给Controller?

亲切的问候,马丁

c# asp.net asp.net-mvc asp.net-mvc-5

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