繁体   English   中英

带有Angular的Html.RenderAction

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM