我想在模态窗口中显示ViewData的内容,该内容在我的情况下保存字符串。 为此,我在我看来使用以下代码。
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<form runat = "server">
<div onload = "poponload('<%=ViewData["sample"].ToString()%>')">
<input type="submit" value="show" id="submitBtn"/>
</div>
<script type="text/javascript" language="Javascript">
function poponload(msg) {
alert(msg.toString().length);
if (msg.toString().length > 0) {
my_window = window.open("",
"mywindow1", "status=1,width=350,height=150");
my_window.document.write(msg.toString());
}
}
</script>
</form>
控制器包含以下简单的操作方法。
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection collection)
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
ViewData["sample"] = "My name is kaps";
return View();
}
我想使用Window.open()显示ViewData [“sample”]的内容。 但是这段代码无法向我显示所需的输出。任何人都可以告诉我如何实现它?
感谢。
答案 0 :(得分:0)
javascript是否正在运行?如果没有,请尝试将该方法放在jquery ready方法中。
类似的东西:
<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
alert(msg.toString().length);
if (msg.toString().length > 0) {
my_window = window.open("",
"mywindow1", "status=1,width=350,height=150");
my_window.document.write(msg.toString());
});
</script>
如果您更好地解释会发生什么,那么提供解决方案会更容易。我无法在此处运行代码,因此需要更多信息。
答案 1 :(得分:0)
divs不支持onload属性。
改为将代码移至body标签。
<body onload = "poponload('<%=ViewData["sample"].ToString()%>')">
答案 2 :(得分:0)
我建议使用jQuery这样的javascript库。有许多模态弹出插件使这类事情变得非常简单。
我最喜欢的一个是Eric Martin的Simple Modal。下面是一个如何用于显示ViewData的示例。
<script type="text/javascript" language="Javascript">
$(document).ready(function() {
$("#sample").modal();
});
</script>
<div id="sample"><%=ViewData["key"]%></div>
修改强>
使用window.open见下文。但是,这不是模式弹出窗口,因为它存在于新的浏览器窗口中。这很可能被弹出窗口阻止程序阻止,所以我不会这样做。
<script type="text/javascript" language="Javascript">
$(document).ready(function() {
var url = "<%= ViewData["key"].ToString() %>";
window.open(url, "DescriptiveWindowName",
"resizable=yes,scrollbars=yes,status=yes");
});
</script>
如何通过弹出窗口拦截器阻止我的窗口被阻止? 使用Mozilla / Firefox和Internet Explorer 6 SP2的内置弹出窗口阻止程序,您必须检查window.open()的返回值:如果不允许打开窗口,它将为null。然而,对于大多数其他弹出窗口拦截器,没有可靠的方法。
希望这有帮助。