Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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
C# mvc局部视图,带有显示html的对话框局部视图_C#_Json_Asp.net Mvc 3_Jquery - Fatal编程技术网

C# mvc局部视图,带有显示html的对话框局部视图

C# mvc局部视图,带有显示html的对话框局部视图,c#,json,asp.net-mvc-3,jquery,C#,Json,Asp.net Mvc 3,Jquery,我试图做的是打开一个jquery对话框。 发生的情况是,我看到了以下html文本与表单在尝试打开PartialView时的呈现: <form action="/Plt/FileUpload" method="post"><input data-val="true" data-val-number="The field PlNum must be a number." data-val-required="The PlNum field is required." id

我试图做的是打开一个jquery对话框。 发生的情况是,我看到了以下html文本与表单在尝试打开PartialView时的呈现:

     <form action="/Plt/FileUpload" method="post"><input data-val="true" data-val-number="The field PlNum must be a number." data-val-required="The PlNum field is required." id="PlNum" name="PlNum" type="hidden" value="36028" />     <div id="errMsg" >

     </div>
     <p>File upload for Pl# 36028</p>
     <input type="file" name="file" />
     <input type="submit" value="OK" />
     </form>
    @model Ph.Domain.Lb.Models.FileUpload

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
这是PartialView的视图的外观:

     <form action="/Plt/FileUpload" method="post"><input data-val="true" data-val-number="The field PlNum must be a number." data-val-required="The PlNum field is required." id="PlNum" name="PlNum" type="hidden" value="36028" />     <div id="errMsg" >

     </div>
     <p>File upload for Pl# 36028</p>
     <input type="file" name="file" />
     <input type="submit" value="OK" />
     </form>
    @model Ph.Domain.Lb.Models.FileUpload

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>

总而言之,ajax调用确实达到了ActionResult,但不确定当它尝试显示它显示的HTML与呈现的HTML的部分视图时

这里的问题是,您正在尝试加载razor视图,该视图尚未呈现到对话框的innerHTML中。相反,您应该在创建对话框时将对话框的href属性设置为URL.Action链接。有关示例,请参见下面的链接

另一个选项是从action方法返回原始HTML,该选项在IMO中不是很容易维护,但可以按照您当前的方式工作


我认为第一种解决方案更好,因为控制器没有受到HTML字符串连接的污染。

jQuery不允许您在
.HTML()
中使用脚本。您可以通过两种方式完成此操作:

改为本机DOM HTML注入:

$('#dialog')[0].innerHTML = result;

或者,将其设置为数据属性并手动加载:

鉴于:

     <form action="/Plt/FileUpload" ...
         data-script="@Url.Content("~/Scripts/jquery.validate.min.js")"
           ... />
参考:

另一种方法是使用
load
方法,如下所示:

$("#dialog").load(url, null, function() {
    // on a side note, put $("#dialog") in a variable and reuse it
   $("#dialog").dialog();
});
参考:

在jQuery验证的情况下,我会考虑将其添加到父页本身。你会期望它能在相当多的情况下使用

$('#dialog').html(result);
var dialogScript = $('#dialog').children().first().data("script");
if(!!dialogScript) { $.getScript(dialogScript); };
$("#dialog").load(url, null, function() {
    // on a side note, put $("#dialog") in a variable and reuse it
   $("#dialog").dialog();
});