如何将变量从控制器传递到视图

时间:2018-08-29 13:18:57

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我试图将控制器中的值传递给视图,但没有用。

我正在使用工作正常的Ajax脚本将值从视图传递到控制器。然后,我要做的就是将该值传递给Index控制器,并将其显示在索引视图中。

这是我的控制器:

    static string global;
    public ActionResult Index(string id)
    {
        TempData["var"] = id;
        return View();
    }
    [HttpPost]
    public object functon(string data)
    {
        return Index(data);
    }

这是我的观点:

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<input class="form-group" id="input"/>
<button class="btn btn-success" id="send">Send</button>

@if ((string)TempData["var"] == null)
{
    <span>Check</span>
}
else
{
    <h1>@TempData["var"].ToString()</h1>
}

@* SCRIPT *@
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
        $(function () {
            $("#send").click(function () {
                $.ajax({
                    type: "POST",
                    url: "/Acceptvalue/functon",
                    data: '{data: "' + $("#input").val() + '" }',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) {
                    },
                    failure: function (response) {
                    },
                    error: function (response) {
                    }
                });
            });
        });
</script>

2 个答案:

答案 0 :(得分:1)

我使用ViewModels

public virtual ActionResult Method()
    {
        MyViewModel vm = new MyViewModel();
        vm.Name = "MyName";
        return View(MVC.Controller.Views.MyView, vm); //also works with partial views
    }

然后在我看来:

@model MyProject.ViewModels.MyViewModel

<h2>@Model.Name</h2>

答案 1 :(得分:-1)

使用ViewBag并将其填充到您的控制器中:

ViewBag.var = id

,然后在视图中访问它:

@if(Viewbag.var == null)

另外,使用以下命令编辑function()

return RedirectToAction("Index", new { id = data });