在序列化Div

时间:2017-01-15 00:21:34

标签: jquery asp.net-mvc razor

我有一个使用Ajax Jquery更新的工作局部视图。

如果我做了一个小的必要更改,则局部视图不再显示返回的视图模型

这是有效的代码。

这是cshtml文件中的代码:

<input type="button" id="EmulatorSubmit" value="Receive UDP Messages" />
<p>
    <h4>Message Received</h4>
    <div id="receivePaneEmulator">
         @Html.Partial("_HttpResponse", Model)
    </div>
</p>

这是我的jQuery:

$('#EmulatorSubmit').click(function (event) {
     if ($(this).val() == "Receive UDP Messages") {
         udpReceiveTimer = setInterval(getUDPMessages, 100);
         $('#EmulatorSubmit').attr('value', 'Stop Receiving UDP Messages');
     } else {
          clearInterval(udpReceiveTimer);
          $('#EmulatorSubmit').attr('value', 'Receive UDP Messages');
          cancelGetUDPMessages();
     }
});

function getUDPMessages() {
     $.ajax({
         url: "@Url.Action("ReceiveUDPMessage", "TestandDevelopment")",
         type: "POST",
         data: $('#UDPSensorForm :input').serialize(),
         datatype: "text",
         success: function (data) {
             $('#receivePaneEmulator').html(data);
         }
     });
};

请注意,此行不执行任何操作:data:$(&#39; #UDPSensorForm:input&#39;)。serialize(), 因为#UDPSensorForm不存在,因为此时我还没有创建它。这很好,不是问题的一部分。

这是我的偏爱:

@model Haptic_Theatre_Vibings_Control.Models.HttpViewModel
@Html.TextAreaFor(m => m.HttpResponse, new { @class = "form-control" , rows = "5" })

这是我的控制器操作:

public ActionResult ReceiveUDPMessage(HttpViewModel httpViewModel)
{
   httpViewModel.HttpResponse = "Hello";
   return PartialView("_HttpResponse", httpViewModel);
}

以上工作正常。我点击了EmulatorSubmit按钮,我得到了#34; Hello&#34;显示在Partial中。

但是,我实际上想从视图中将一些数据发送到Action。 所以我添加了一个带有UDPSensorForm ID的Div,它在jQuery中用来收集数据:

修改后的cshtml:

<div id="UDPSensorForm">
    <h4>Port Nunber</h4>
         @Html.TextBoxFor(m => m.HttpPortNumber, new { @class = "form-control input-sm" })
    <p></p>
    <input type="button" id="EmulatorSubmit" value="Receive UDP Messages" />
    <p>
        <h4>Message Received</h4>
        <div id="receivePaneEmulator">
             @Html.Partial("_HttpResponse", Model)
        </div>
    </p>
<    input type="button" id="EmulatorSubmit_Record" value="Record UDP Messages" />
    <p>
        <h4>Activity Note</h4>
        <div id="activityNote">
             @Html.TextAreaFor(m => m.ActivityNote, new { @class = "form-control", rows = "5" })
         </div>
    </p>
</div>

EmulatorSubmit和EmulatorSubmit_Record共享HttpPortNumber中的数据,这就是为什么我没有制作2个表单(它们共享很多其他数据。为了清晰起见,我已经删除了代码)

我为新按钮EmulatorSubmit_Record添加了Jquery和Actions。

EmulatorSubmit的JQuery,Partial和Controller Action没有改变。

现在,当我点击EmulatorSubmit时,我可以看到Action中的模型,它已经拾取了HttpPortNumber。

我可以看到部分视图刷新。

但部分视图不再显示&#34; Hello&#34;

为什么添加此Div会阻止部分视图正确接收视图模型?

编辑:如果我将部分视图移到div之外,那么&#34;你好&#34;被展示。尽管我的布局很好: - (

0 个答案:

没有答案