有什麼方法可以在新窗口中從控制器操作打開視圖?從控制器的新窗口打開mvc視圖
public ActionResult NewWindow()
{
// some code
return View();
}
我該如何獲得NewWindow.cshtml視圖在一個新的瀏覽器標籤中打開?
我知道如何從視圖中的鏈接 - 這不是問題。有沒有人想出了一個辦法,從控制器動作?
有什麼方法可以在新窗口中從控制器操作打開視圖?從控制器的新窗口打開mvc視圖
public ActionResult NewWindow()
{
// some code
return View();
}
我該如何獲得NewWindow.cshtml視圖在一個新的瀏覽器標籤中打開?
我知道如何從視圖中的鏈接 - 這不是問題。有沒有人想出了一個辦法,從控制器動作?
這不能從控制器本身完成,而是從您的視圖中完成。在我看來,你有兩個選擇:
(使用HTML幫助和直HMTL語法示例)裝飾用 「_blank」 屬性您的鏈接
@Html.ActionLink("linkText", "Action", new {controller="Controller"}, new {target="_blank"})
<a href="@Url.Action("Action", "Controller")" target="_blank">Link Text</a>
使用Javascript打開新窗口
件window.open("Link URL")
你在問錯誤的問題。代碼隱藏(控制器)與前端的功能無關。事實上,這就是MVC的優勢 - 你將代碼/概念從視圖中分離出來。
如果您想要在新窗口中打開某個操作,那麼指向該操作的鏈接需要通知瀏覽器在單擊時打開一個新窗口。
僞例如:<a href="NewWindow" target="_new">Click Me</a>
,這一切就是這麼簡單。設置該動作的鏈接目標。
什麼是對POST控制器方法等與所述提交行爲視圖代碼從視圖傳遞表單對象等離子?上面的動作默認爲GET。 – AKS
如果你必須做一個帖子,那麼你會做一個'
是的,你可以做一些棘手的作品模擬你想要什麼:
1)從阿賈克斯視圖打電話給你的控制器。 2)返回您查看
3)使用類似的success
以下(或者error
錯誤對我的作品)部分的$就要求:!
$("#imgPrint").click(function() {
$.ajax({
url: ...,
type: 'POST', dataType: 'json',
data: $("#frm").serialize(),
success: function (data, textStatus, jqXHR) {
//Here it is:
//Gets the model state
var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))';
// checks that model is valid
if (isValid == 'true') {
//open new tab or window - according to configs of browser
var w = window.open();
//put what controller gave in the new tab or win
$(w.document.body).html(jqXHR.responseText);
}
$("#imgSpinner1").hide();
},
error: function (jqXHR, textStatus, errorThrown) {
// And here it is for error section.
//Pay attention to different order of
//parameters of success and error sections!
var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))';
if (isValid == 'true') {
var w = window.open();
$(w.document.body).html(jqXHR.responseText);
}
$("#imgSpinner1").hide();
},
beforeSend: function() { $("#imgSpinner1").show(); },
complete: function() { $("#imgSpinner1").hide(); }
});
});
您可以使用湯米在形式方法,以及:
@using (Html.BeginForm("Action", "Controller", FormMethod.Get, new { target = "_blank" }))
{
//code
}
@Html.ActionLink("linkText", "Action", new {controller="Controller"}, new {target="_blank",@class="edit"})
script below will open the action view url in a new window
<script type="text/javascript">
$(function(){
$('a.edit').click(function() {
var url = $(this).attr('href');
window.open(url, "popupWindow", "width=600,height=800,scrollbars=yes");
});
return false;
});
</script>
如果我想在鏈接的新窗口中打開一個視圖,可以使用它:@ Html.ActionLink(「linkText」,「Action」,「Controller」,new {target =「_ blank」}。沒有測試過將控制器作爲對象routeValue傳遞,爲什麼你會這樣?但那不是問題。儘管「不能完成」你確實回答了原始問題,所以我將其標記爲答案。 – Joe
@Joe - 這只是我使用的Html.ActionLink重載的選擇,它具有以下簽名 - Html.ActionLink(string linkText,string Action,object routeValues,object htmlAttributes) - 但它只是個人選擇,您可以使用你希望接受htmlAttributes參數的任何重載。 – Tommy
有沒有一種方法來定義新窗口的尺寸? (使用剃刀) – barnes