1

我用视图本地化了 ASP.NET MVC 应用程序:

 <button type="submit" value="@Resources.Yes">
 <button type="submit" value="@Resources.No">

和控制器:

public ActionResult Index(..., string submit)
{           
   switch (submit)
   {
      case "Yes":    
      default:
           .....
           break;
      case "No":
           ....
           break;
    }
}

但它显然只适用于英语。您如何解决多种语言的提交按钮检测?

我找到了文章http://blog.maartenballiauw.be/post/2009/11/26/Supporting-multiple-submit-buttons-on-an-ASPNET-MVC-view.aspx,他们在其中使用属性,但我可以'不要使用它,因为本地化不是恒定的。

4

3 回答 3

1

在您的视图模型中,为每个按钮包含一个字符串属性:

public class MyViewModel
{
    public string YesButton { get; set; }
    public string NoButton { get; set; }
}

在视图中:

<input type="submit" name="@Html.NameFor(m => m.YesButton)" value="@Resources.Yes" />
<input type="submit" name="@Html.NameFor(m => m.NoButton)"  value="@Resources.No" />

在控制器中,只有与用户单击的按钮关联的属性才会包含值。其他“按钮”属性将为空。所以:

// Do something if the user clicked on the Yes button
if (model.YesButton!= null) <Do Something>
于 2014-01-25T02:29:09.573 回答
0

我已经解决了。我不太喜欢它,但是如果您有更好的解决方案,请发布:

看法:

 <button type="submit" value="@Resources.Yes">
 <button type="submit" value="@Resources.No">

和控制器:

private enum IndexSubmitResult{Yes, No};

private IndexSubmitResult? GetSubmitButton(string submit)
{
   if(submit == MyProject.Resources.Views.Home.Index.Yes)
      return IndexSubmitResult.Yes;
   else if(submit == MyProject.Resources.Views.Home.Index.No)
      return IndexSubmitResult.No;
   else
      return null;
}

public ActionResult Index(..., string submit)
{           
   switch (GetSubmitButton(submit))
   {
      case IndexSubmitResult.Yes:    
      default:
           .....
           break;
      case IndexSubmitResult.No:
           ....
           break;
    }
}
于 2013-10-02T20:19:29.577 回答
0

在您的程序集或另一个程序集中创建一个资源文件。
创建一个带有字符串属性的视图模型类。
像这样使用显示属性。

public class ViewModelClass
{
    [Display(Name = "locproperty ", ResourceType = typeof(YourResoureFile))]
    public string locproperty { get; set; }
}

然后在你看来像这样使用它

<a class="btn btn-default" href="~/Controller/Action" @Html.LabelFor(m => m.locproperty ) </a>
于 2015-10-13T11:57:52.737 回答