Html.RenderAction 和 Angular
Html.RenderAction with Angular
我试着写下类似的东西;
Html.RenderAction("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
但它给出了类似 "The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.PartialViewResult"
的错误
但是如果我像下面这样写就可以了;
var url = Url.Action("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
如何在 Html.RenderAction 方法中传递 angular 值?
假设您有这样的控制器操作:
public class PoetryController : Controller
{
public PartialViewResult Reviews(int id)
{
// do something
}
}
RenderAction
方法在发送到客户端浏览器之前从服务器解析和呈现,因此您的第一种方法 不可能 因为 Angular 表达式服务器端代码无法将 {{ poetry.ID }}
正确解析为操作参数,因此它作为 null 传递并抛出不可为 null 的参数异常,因为 id
声明为 int
,而不是 Nullable<int>
.
假设你想使用 Angular 值(或 JS 值)加载部分视图,通常在控制器内部使用 $http()
函数,然后调用包含 HTTP 请求的函数名:
Razor 中的 JS 变量
var pageUrl = '@Url.Action("Reviews", "Poetry")';
Angular函数
$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);
});
我试着写下类似的东西;
Html.RenderAction("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
但它给出了类似 "The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.PartialViewResult"
的错误但是如果我像下面这样写就可以了;
var url = Url.Action("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
如何在 Html.RenderAction 方法中传递 angular 值?
假设您有这样的控制器操作:
public class PoetryController : Controller
{
public PartialViewResult Reviews(int id)
{
// do something
}
}
RenderAction
方法在发送到客户端浏览器之前从服务器解析和呈现,因此您的第一种方法 不可能 因为 Angular 表达式服务器端代码无法将 {{ poetry.ID }}
正确解析为操作参数,因此它作为 null 传递并抛出不可为 null 的参数异常,因为 id
声明为 int
,而不是 Nullable<int>
.
假设你想使用 Angular 值(或 JS 值)加载部分视图,通常在控制器内部使用 $http()
函数,然后调用包含 HTTP 请求的函数名:
Razor 中的 JS 变量
var pageUrl = '@Url.Action("Reviews", "Poetry")';
Angular函数
$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);
});