[英]Html.RenderAction with Angular
我尝试写下面的东西;
Html.RenderAction("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
但是它会出现类似“参数字典为方法'System.Web.Mvc.PartialViewResult包含不可空类型'System.Int32'的参数'id'的空条目”的错误。
但是,如果我在下面写类似的东西,它可以正常工作;
var url = Url.Action("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
如何在Html.RenderAction方法中传递角度值?
假设您具有以下控制器操作:
public class PoetryController : Controller
{
public PartialViewResult Reviews(int id)
{
// do something
}
}
RenderAction
方法是在发送到客户端浏览器之前从服务器解析并呈现的,因此您的第一种方法是不可能的,因为服务器端代码无法正确解析Angular表达式(例如{{ poetry.ID }}
作为操作参数,因此它得以传递为null并引发非空参数异常,因为id
声明为int
,而不是Nullable<int>
。
假设您要使用Angular值(或JS值)加载部分视图,通常在控制器内部使用$http()
函数,然后调用包含HTTP请求的函数名称:
Razor中的JS变量
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);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.