Предположим, вы выполняете действие контроллера следующим образом:
public class PoetryController : Controller
{
public PartialViewResult Reviews(int id)
{
// do something
}
}
Метод RenderAction
анализируется и обрабатывается с сервера перед отправкой в браузер клиента, поэтому ваш первый подход невозможен поскольку угловые выражения, такие как {{ poetry.ID }}
, не могут быть должным образом проанализированы серверным кодом в качестве параметра действия, следовательно, он передан как нулевой и вызывает исключение необнуляемого параметра, поскольку id
объявлено как int
, а не Nullable<int>
.
Предполагается, что вы хотите загрузить частичное представление, используя угловое значение (или значение JS), обычно в контроллере используется $http()
функция, а затем вызывается имя функции, содержащее HTTP-запрос:
переменная JS в Razor
var pageUrl = '@Url.Action("Reviews", "Poetry")';
Угловая функция
$http({
method: 'GET',
url: pageUrl,
params: {
id: poetry.ID
}).then(function (response) {
// load partial view here
angular.element('#targetElement').html(response);
});
Или с использованием сокращенных $http.get()
, поскольку RenderAction
требуется метод GET для визуализации содержимого частичного представления:
$http.get(pageUrl + '?id=' + poetry.ID).then(function (response) {
// load partial view here
angular.element('#targetElement').html(response);
});