【问题标题】:pass data from partial view to other partial view将数据从局部视图传递到其他局部视图
【发布时间】:2015-09-01 11:48:17
【问题描述】:

我有部分视图 .cshtml 页面为

$("#btnsearch").click(function () {
    dserial = $("#dserial").val();
    $('.content').load("/ServiceMaintenance/SearchInstallationDeviceDetails");
})

这里“dserial”是文本框的id,“btnsearch”是按钮的id,“content”是要加载部分视图的div的id[class]。

我需要将“dserial”的值分配给控制器“ServiceMaintenance”中的视图 SearchInstallationDeviceDetails.cshtml 中的只读文本框(让 id 为“serialno”)

【问题讨论】:

  • 你能改变动作参数吗?最简单的选择是将dserial 值传递给控制器​​的操作,并让部分视图已经具有只读字段。如果没有,那么您只需要查看$.loadcomplete 参数即可。让我们知道您可以采取哪些措施来获得可行的答案。
  • 如何临时存储 dserial 并将该值分配给其他视图中的文本框。? @freedomn-m

标签: jquery asp.net-mvc partial-views


【解决方案1】:

1 改变动作参数,假设一个控制器动作:

public ActionResult SearchInstallationDeviceDetails()

改成

public ActionResult SearchInstallationDeviceDetails(string dserial)

(如果字符串不合适,则为int/guid

然后改变你的js来传递参数:

$('.content').load(
              "/ServiceMaintenance/SearchInstallationDeviceDetails",
              { dserial : dserial });

注意:这仅适用于简单 ID,如果不是简单 ID,则必须使用 POST

然后更新您的局部视图的视图模型以传递 dserial 并在视图中:

@Html.TextBoxFor(model=>model.dserial, ...

2 在部分加载后注入值。

不太好,但取决于您的限制(例如,如果您不能更改控制器)。您可能会得到一种 FOUC(无样式内容的闪存) - 在本例中为“未输入”内容

$('.content').load(
          "/ServiceMaintenance/SearchInstallationDeviceDetails",
          function() {
              $("#serialno").val(dserail).prop("readonly", true);
          });

【讨论】:

    【解决方案2】:

    内容加载后可以这样填写吗?

    $('.content').load("/ServiceMaintenance/SearchInstallationDeviceDetails",
    function() {
      $('.content #serialno').val(dserial);
    });
    

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      相关资源
      最近更新 更多