从视图调用方法并接收其值:

时间:2014-07-19 15:47:41

标签: c# asp.net-mvc

我得到了这个从列表中返回一个随机单词的方法:

public string GetRandom()
{
    var firstNames = new List<string> {"Hund", "Katt", "Hus", "Bil"};

    Random randNum = new Random();
    int aRandomPos = randNum.Next(firstNames.Count);//Returns a nonnegative random number less than the specified maximum (firstNames.Count).

    string currName = firstNames[aRandomPos];

    return currName;
}

在我看来,我希望能够调用此方法并显示它返回的值。 我无法弄清楚如何,我可以这样调用这个方法:

@Html.ActionLink("GetRandom","GetRandom")

但是我如何处理它的值并在视图中显示它?

2 个答案:

答案 0 :(得分:2)

看起来您需要使用Javascript才能产生您在最新评论中描述的效果。

  1. 更改GetRandom方法以返回JsonResult而不是string

    public ActionResult GetRandom()
    { 
        var firstNames = new List<string> { "Hund", "Katt", "Hus", "Bil" };
        Random randNum = new Random();
        int aRandomPos = randNum.Next(firstNames.Count);
        string currName = firstNames[aRandomPos];
        return Json(currName, JsonRequestBehavior.AllowGet);
    }
    
  2. 每次点击按钮时,使用jQuery检索数据并在标签异步(无页面刷新)中显示:

    <p id="randomName">Random Swag</p>
    <button id="randomButton">Generate Name</button>
    
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script>
         $("#randomButton").click(function () {
             $.get('/Home/GetRandom', function (data) {
                 $("#randomName").text(data);
             });
         });
    </script>
    

答案 1 :(得分:0)

将您的方法放在一个派生自Controller

的类中

ActionLink,第一个参数是动作名称,第二个参数是控制器名称。

你想这样打电话。

@Html.ActionLink("GetRandom", "GetRandom")

这是你需要的。

public class GetRandomController : Controller
{
    public string GetRandom()
    {
        var firstNames = new List<string> { "Hund", "Katt", "Hus", "Bil" };

        Random randNum = new Random();
        int aRandomPos = randNum.Next(firstNames.Count);//Returns a nonnegative random number less than the specified maximum (firstNames.Count).

        string currName = firstNames[aRandomPos];

        return currName;
    }
}