Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ViewData值从控制器传递到视图_Javascript_C#_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript 将ViewData值从控制器传递到视图

Javascript 将ViewData值从控制器传递到视图,javascript,c#,jquery,asp.net,asp.net-mvc,Javascript,C#,Jquery,Asp.net,Asp.net Mvc,我正在对我的控制器方法进行ajax调用,并期望结果返回到我的视图。但是,即使控制器返回ViewData值,我的视图也不会显示来自控制器方法的值 扫描仪视图(精简版) JS(精简版) 在“网络”选项卡下的“响应”部分中,我可以看到成功的ajax调用后控制器正在传递结果,但视图中未呈现更新后的@ViewData[“TextAreaResult”]。我猜这与由于没有页面刷新而没有传递新值有关 我期望的输出(在本例中)是显示包激活时的响应 网络选项卡-Ajax调用响应 HTML视图-仍然显示在Scan

我正在对我的控制器方法进行ajax调用,并期望结果返回到我的视图。但是,即使控制器返回
ViewData
值,我的视图也不会显示来自控制器方法的值

扫描仪视图(精简版)

JS(精简版)

在“网络”选项卡下的“响应”部分中,我可以看到成功的ajax调用后控制器正在传递结果,但视图中未呈现更新后的
@ViewData[“TextAreaResult”]
。我猜这与由于没有页面刷新而没有传递新值有关

我期望的输出(在本例中)是显示
包激活时的响应

网络选项卡-Ajax调用响应

HTML视图-仍然显示在
Scanner()
函数中定义的默认
@ViewData[“TextAreaResult”]
文本。

我看不到您的代码中有任何地方实际使用返回的HTML更新视图

如果将成功回调添加到AJAX帖子中,可以执行以下操作:

$('#my-button').click(function() {
    $.ajax({
        url: "DecodeScanner",
        type: "POST",
        data: {
            productCode: productCode,
            serialNumber: serialNumber,
            batch: batch,
            expirationDate: expirationDate,
            commandStatusCode: 0
        },
        async: true            
    }).done(function(html) {
        $('.card').replaceWith(html);
    });
});

(未经测试,但希望您能理解)

您无法更新已渲染的
@ViewData[“textrarearesult”]
。为了实现这一目标,你需要这样做

扫描仪视图

将viewdata放入p标记中

  <p id="pTextAreaResult">@ViewData["TextAreaResult"]</p>
脚本

$('#my-button').click(function() {
    $.ajax({
        url: "DecodeScanner",
        type: "POST",
        data: {
            productCode: productCode,
            serialNumber: serialNumber,
            batch: batch,
            expirationDate: expirationDate,
            commandStatusCode: 0
        },
        async: true,
        success: function(data) {
           $('#pTextAreaResult').text(data);
        }
    });
});

其他详细信息在视图中得到更新?您可以尝试:Html.Raw(ViewData[“HTMLData”].ToString())不确定其他详细信息是什么意思。我只是从没有更新的控制器传递TextAreaResult字符串。页面上的其余细节来自JS代码。唯一的问题是结果输出部分,我希望TextAreaResult值
@ViewData[“TextAreaResult”]
在Scanner视图或DecodeScanner视图中?我认为要更改
ViewData
值,需要触发回发,而不是AJAX回调
$.ajax
通常用于返回部分视图而不是整个视图。它不只是在
.card
div中呈现整个html页面吗?我应该如何只提取
@ViewData[“TextAreaResult”]
部分并在视图中替换它?因为您使用AJAX调用刷新页面,我假设您的视图只是部分视图。。。不是这样吗?我没有
DecodeScanner
视图。实际上,Decode Scanner只是一个操作,它进行处理并将数据返回到
Scanner
view显示您的ajax响应方法这就是我在问题中发布的所有代码。我是否可以只使用
Scanner()
操作并执行
[HttpPost]
来自ajax方法的调用?等等,我正在更新mt asnwer
$('#my-button').click(function() {
    $.ajax({
        url: "DecodeScanner",
        type: "POST",
        data: {
            productCode: productCode,
            serialNumber: serialNumber,
            batch: batch,
            expirationDate: expirationDate,
            commandStatusCode: 0
        },
        async: true            
    }).done(function(html) {
        $('.card').replaceWith(html);
    });
});
  <p id="pTextAreaResult">@ViewData["TextAreaResult"]</p>
[HttpPost]
public IActionResult DecodeScanner(string productCode, string serialNumber, string batch, string expirationDate, int commandStatusCode) {
    string TextAreaResult = string.Empty;
    try {
        Control.Initialize();
        Control control = new Control();
        Request request = new Request();

        request.setProductCode(productCode);
        request.setSerialNumber(serialNumber);
        request.setBatch(batch);
        request.setExpirationDate(expirationDate);
        request.setCommandStatusCode(commandStatusCode);

        control.sendSinglePackOperation(request);

        Console.WriteLine("Response:" + request.getHttpResponseCode());

        TextAreaResult = string.Format(" Response {0}", request.getHttpInformation());

    } catch (Exception exc) {
        TextAreaResult = "Exception: " + exc.Message;
    }

    return Json(TextAreaResult, JsonRequestBehavior.AllowGet);
}
$('#my-button').click(function() {
    $.ajax({
        url: "DecodeScanner",
        type: "POST",
        data: {
            productCode: productCode,
            serialNumber: serialNumber,
            batch: batch,
            expirationDate: expirationDate,
            commandStatusCode: 0
        },
        async: true,
        success: function(data) {
           $('#pTextAreaResult').text(data);
        }
    });
});