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

前端之家收集整理的这篇文章主要介绍了c# – 从MVC Controller返回一个字符串到jQuery前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想调用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>

猜你在找的C#相关文章