2013-10-02 3 views
1

Я localizaed приложение ASP.NET MVC с точки зрения:ASP.NET MVC Отправить локализации кнопку

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

и cotroller:

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, где они используют атрибуты, но я не могу ее использовать, потому что локализация не является постоянной.

ответ

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> 
0

Я решил. Я не люблю это слишком много, но если у вас есть лучшее решение, пожалуйста, напишите его:

Вид:

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

и cotroller:

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; 
    } 
} 
0

Сделайте файл с ресурсами в своей сборке или в другой сборке.
Создайте класс viewmodel со строковым свойством.
Используйте атрибут отображения следующим образом.

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> 
Смежные вопросы