加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从MVC Controller返回一个字符串到jQuery

发布时间:2020-12-15 18:29:32 所属栏目:百科 来源:网络整理
导读:我想调用ASP.NET MVC4控制器并让它返回一个jQuery方法的字符串,然后输出带有alert()的字符串.下面的代码只输出对象Object. jQuery的: $launchTRs = function (appID) { var html = $.get("/PartialView/GetTRAsString?appID=" + appID,function (data) { })
我想调用ASP.NET MVC4控制器并让它返回一个jQuery方法的字符串,然后输出带有alert()的字符串.下面的代码只输出对象Object.

jQuery的:

$launchTRs = function (appID) {
    var html = $.get("/PartialView/GetTRAsString?appID=" + appID,function (data) { });
    alert(html.toString());
}

ASP:

public string GetTRAsString(string appID)
{
    // Populate revisions
    string html = "<ul>";

    foreach(RevesionInfo revInfo in revisions)
    {
        html += "<li>" + revInfo.RevDesc + "</li>";
    }

    html += "</ul>";

    return html;
}

Outut:

[object Object]

解决方法

在ASP.NET MVC控制器中,操作不返回字符串.他们返回ActionResults.

因此,首先要修复你的行动(请阅读下面的内容,了解为什么我将修正用斜体,这是因为这只是第一阶段):

public ActionResult GetTRAsString(string appID)
{
    // Populate revisions
    string html = "<ul>";

    foreach(RevesionInfo revInfo in revisions)
    {
        html += "<li>" + revInfo.RevDesc + "</li>";
    }

    html += "</ul>";

    return Content(html,"text/html");
}

AJAX中的第一个A字母代表异步,因此您应该将警报放在成功回调中,这是结果可用的唯一位置:

$.get('/PartialView/GetTRAsString',{ appID: appID },function (data) { 
    alert(data);
});

还要记住,在控制器动作中生成HTML是一个糟糕的主意.混合C#和HTML导致丑陋,我不想发表评论.

在ASP.NET MVC中,V代表View,所以继续使用它们.控制器操作的目的是获取模型并将此模型传递给视图以进行投影:

public ActionResult GetTRAsString(string appID)
{
    IEnumerable<Revision> revisions = ... go get your revisions from the DB or something
    return PartialView(revisions);
}

然后你的视图将被强烈输入到模型中,你将在里面生成必要的标记:

@model IEnumerable<Revision>
<ul>
    @foreach (var revInfo in Model)
    {
        <li>
            @revInfo.RevDesc
        </li>
    }
</ul>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读