я следующий простой код ASPX:ViewState не сохраняет изменения
WebForm1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function myFunction() {
document.getElementById("Label1").className = "clientAssignedClass";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label runat="server" Text="Label" ID="Label1"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Update" />
<asp:Button ID="Button2" runat="server" Text="Change at server" OnClick="Button2_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Button ID="Button3" runat="server" Text="Change at client" OnClientClick="myFunction()" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
со следующим кодом CS:
WebForm1.aspx.cs
using System;
namespace WebApplication3
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
Label1.CssClass = "serverAssignedClass";
}
}
}
Когда я нажимаю кнопку Change at server (Button2)
, а затем кнопку Update
, атрибут класса сохраняется через обратные вызовы, но когда я нажимаю Change at client (Button3)
, а затем Update
, атрибут класса не сохраняется во всех обратных передачах (после Update
postback любые изменения, сделанные на клиенте, будут потеряны).
Как сохранить изменения, сделанные на клиенте (например, изменение класса, сделанное Bootstrap, т. Е. active
) через обратную передачу?
Я не знаю, изучаете ли вы, или вы опытный разработчик, который застрял в работе над существующим проектом веб-форм. Если вы первый, моя рекомендация заключалась бы в том, чтобы удалить веб-формы и изучить MVC. Вебформы умирают.Это не бесполезно знать, потому что существует так много устаревшего кода, но я не вижу разработки новых приложений с веб-формами. MVC предназначен для бездействия, поэтому вам не придется иметь дело с сервером, который пытается управлять состоянием вашего представления между запросами. –
Я закончил использование 'WebMethods', которые вызывается с jQuery для обновления сервера с состоянием элементов управления, которое затем сохраняется в веб-сеансе. И когда страница/страница страницы перезагружается, состояние восстанавливается из веб-сессии. Я только начинаю с ASP, и я смотрел как MVC, так и Webforms, и кажется, что Webforms более прямолинейны в использовании. Проект, который я делаю, представляет собой тяжелую серверную часть с простым веб-интерфейсом, но с динамически создаваемыми элементами управления начальной загрузкой. – Chris