【问题标题】:How to use value from Jquery to Html helper razor如何使用从 Jquery 到 Html helper razor 的值
【发布时间】:2018-01-24 04:36:43
【问题描述】:

在 JavaScript 中

   <script>
           var xmlHttpRequest = new XMLHttpRequest();
           xmlHttpRequest.open("POST", '@Url.Action("****", "****")',true);

           xmlHttpRequest.onloadend = function() {
               @{
                     var res = (UserResponseMvc) TempData["UserResponse"];  
                }
                @Html.ShowAlert(res?.Message)
           }

           xmlHttpRequest.send();
   </script>

在控制器中

public ActionResult Upload() {
       //code

        TempData["UserResponse"] = new UserResponseMvc
        {
            Success = true,
            Message = "Upload Success"
        };

        return View();

}

在这篇文章中,代码不知道res 变量。

如何在此处使用res 变量?

我用 Asp.net Mvc 代码编写。

请帮帮我。

【问题讨论】:

  • @Html 是剃须刀代码。它在发送到视图之前在服务器上解析。 res 是一个客户端变量,此时不存在。将您的消息分配给视图模型属性,而不是 javscript 变量

标签: javascript jquery asp.net-mvc variables razor


【解决方案1】:

我认为这不可能发生 ShowAlert 如果只有函数显示消息,那么它应该是 javascript 的函数。

你不能。原因是他们不在同一时间“生活”。 Razor 变量是“服务器端变量”,它们不存在 页面发送到“客户端”后不再存在。

当服务器收到对视图的请求时,它会创建视图 只有 HTML、CSS 和 Javascript 代码。没有留下任何 C# 代码,全部得到 “翻译”成客户端语言。

当视图仍在服务器上时,Javascript 代码确实存在,但是 它没有意义,只会由浏览器执行(客户端 再次)。

这就是为什么您可以使用 Razor 变量来更改 HTML 和 Javascript,但反之亦然。尝试查看您的页面源代码 (在大多数浏览器中为 CTRL+U),那里不会有 C# 代码的迹象。

简而言之:

  1. 服务器收到请求。
  2. 服务器创建“获取”视图、计算嵌入视图中的所有 C# 代码并将其转换为 CSS、Javascript 和 HTML。
  3. 服务器将视图的客户端版本作为对请求的响应返回给浏览器。
  4. 浏览器呈现页面并执行所有 Javascripts

参考How to pass a value to razor variable from javascript variable?

就你而言,我有一些文件供你参考。

jQuery Ajax File Upload

File upload using MVC 4 with Ajax

【讨论】:

  • 上传时会显示警报,但不会显示消息变量中的值。然后,当我刷新页面并上传它时,它会显示消息变量中的值。我用 ViewBagTempData 测试了它,但没有。您认为问题出在哪里?
  • 我使用XMLHttpRequest进行上传,无法刷新。这是因为它不显示 Message 变量内的值。你有办法解决这个问题吗,因为我不想刷新页面。
  • 我认为你应该使用 ajax,就像 @Ali Soltani 指导的那样
  • 我已经编辑了帖子,请看。 XmlHttpRequestAjax 更容易上传。当然,在我看来。
  • 在这里试试,也许对你有帮助:stackoverflow.com/questions/2428296/…
【解决方案2】:

你可以这样:

查看

<input type="button" value="ClickToSend" onclick="sendToAction()" />

<script>
    function sendToAction() {
        var res = ["Upload1", "Upload2", "Upload3"]; // Sample

        jQuery.ajax({
            type: "POST",
            url: "@Url.Action("Upload")", // Upload is your action in controller
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(res),
            success: function (data) { alert(data); },
            failure: function (errMsg) {
                alert(errMsg);
            }
        });
    }
</script>

动作

[HttpPost]
public ActionResult Upload(List<String> res)
{
   return View();
} 

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2011-10-18
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多