C# mvc局部视图,带有显示html的对话框局部视图
我试图做的是打开一个jquery对话框。 发生的情况是,我看到了以下html文本与表单在尝试打开PartialView时的呈现: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
<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();
});
参考:
$('#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();
});