我尝试写如下内容;
var url = Url.Action("Reviews", "Poetry", new { id = "{{ poetry.ID }}" });
但是会出现类似“参数字典为方法'System.Web.Mvc.PartialViewResult包含非空类型'System.Int32'的参数'id'的空条目”的错误提示
但是,如果我在下面写类似的东西,就可以了;
{{1}}
如何在Html.RenderAction方法中传递角度值?
答案 0 :(得分:1)
假设您具有以下控制器操作:
public class PoetryController : Controller
{
public PartialViewResult Reviews(int id)
{
// do something
}
}
RenderAction
方法在发送到客户端浏览器之前已从服务器解析并呈现,因此您的第一种方法不可能,因为无法正确解析诸如{{ poetry.ID }}
之类的Angular表达式服务器端代码将其作为操作参数,因此,由于id
声明为int
,而不是Nullable<int>
,因此它作为null传递并抛出不可为空的参数异常。
假设您要使用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);
});