2013-05-02 2 views
2

У меня есть приложение ASP.NET MVC Razor. В этом приложении у меня есть элемент управления MultiSelect (в основном это выпадающий список, из которого вы можете выбрать несколько элементов). Я подписался на «закрытое» событие этого элемента управления, так что когда он закрыт, он передает цепочку целых чисел, разделенных запятыми, в контроллер. Однако, хотя метод в контроллере вызывается, передаваемое значение всегда равно нулю. Я проверил событие, и я знаю, что строка генерируется правильно. Вот код в обработчик события:Передача строки из представления в контроллер в ASP.NET MVC Razor

`function close() { 
     var alertTypeIds = $("#alertMultiSelect").val().toString(); 
     //alert("this is the alertTypeId: " + alertTypeIds); 
     $.post('@Url.Action("SubscribeToAlerts")', { value: alertTypeIds }, function (result) { 
      alert("the value was successfully sent to the server"); 
     }); 
    };` 

Вот код контроллера:

`public void SubscribeToAlerts(string alertTypeIds) 
    { 
     bool isSubscribedToNewItem = false; 
     bool isSubscribedToNewCustomer = false; 
     bool isSubscribedToNewSupplier = false; 

     if (alertTypeIds.Contains('1')){ 
      isSubscribedToNewItem = true; 
     } 
     if (alertTypeIds.Contains('2')) { 
      isSubscribedToNewCustomer = true; 
     } 
     if (alertTypeIds.Contains('3')) { 
      isSubscribedToNewSupplier = true; 
     } 

     var subscriptionRepository = new BMTool.Persistance.SubscriptionRepository(); 
     var userRepository = new BMTool.Persistance.UserRepository(); 

     IList<BMTool.Models.User> user = userRepository.GetUser("[email protected]"); 
     int associateId = user[0].AssociateId; 

     subscriptionRepository.UpdateSubscriptionForUser(associateId, isSubscribedToNewItem, isSubscribedToNewCustomer, isSubscribedToNewSupplier, 
      isSubscribedToBmTerminated, isSubscribedToBmChange, isSubscribedToItemCategoryChange); 
    }` 

Теперь я знаю, что строка alertTypeIds генерируется правильно в обработчике. Я также знаю, что метод контроллера ударяется. Однако значение, переданное в контроллер (alertTypeIds), всегда равно нулю. Я также хочу отметить, что я знаю, что это неаккуратный код. Я просто хотел убедиться, что я не перехожу к нулевому значению, прежде чем я займусь написанием кода, который, возможно, придется выбросить.

ответ

3

Это должно быть это вместо этого; обратите внимание на новое имя данных:

$.post('@Url.Action("SubscribeToAlerts")', { alertTypeIds: alertTypeIds }, 
    function (result) { 
      alert("the value was successfully sent to the server"); 
    }); 

Имя поля должно совпадать с именем в контроллере, так что вы должны использовать alertTypeIds.

Смежные вопросы