0
我在我的MVC應用程序中有一個ASPX視圖,它有一個FileSelector,一個標籤和一個按鈕,用於將FileSelector的選定文件名和大小放入標籤中(這是用於測試的目的;最終版本將發送FileSelector的FileBytes字節數組到SQL Server數據庫)。 Hoewver,當我按下按鈕時,頁面刷新,標籤保持不變。如何保持服務器按鈕不刷新ASPX視圖?
這裏是視圖代碼:「沒有文件尚未選擇」
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<!DOCTYPE html>
<html>
<script runat="server" language="C#">
void btnLoad_Click(Object sender, EventArgs e)
{
byte[] B = FileSelector.FileBytes;
lblStatus.Text = "File \"" + FileSelector.FileName + "\" has size " + B.Length;
}
</script>
<head runat="server">
<title>ABMC - Add Photo (ASPX version) </title>
</head>
<body>
<div>
<form runat="server">
<asp:FileUpload ID="FileSelector" runat="server" />
<br /><br />
<asp:Button ID="btnLoad" Text="Load" runat="server" OnClick="btnLoad_Click" />
<br /><br />
<asp:Label ID="lblStatus" runat="server">No file selected yet</asp:Label>
</form>
</div>
</body>
</html>
當我選擇一個文件,然後點擊「Load」按鈕,頁面刷新,標籤讀取依舊,
我確實設法通過使用單獨的ASPX表單(代碼位於單獨的.aspx.cs文件中)而不是MVC視圖來工作(排序),但我必須將模型傳遞迴調用這個頁面的頁面,所以我寧願在View中做這個。
如果這是一個MVC項目,那麼您將無法按照您所描述的方式訪問服務器控件:'
如果這是一個webforms項目,您將刪除'runat =「server」'或在JQuery'$(「#btnLoad」)中捕獲它。click(function(){return false} )' – CSharper
我不能讓它作爲一個單獨的視圖來工作,但我確實得到它作爲一個混合MVC/WebForms項目(它幾乎是我可以讓文件選擇器能夠讀取來自客戶端的文件沒有JavaScript抱怨)。 至於「將模型傳遞迴調用頁面」** THWACK ** - 我不需要傳遞模型 - 只需調用通過Request.QueryString的視圖並附加參數就好像它是一個URL 。 –