Для сайта, который я разрабатываю, у меня есть две кнопки html, а не ASP, потому что я не хочу, чтобы они публиковались.Для кнопки отправки я вызываю функцию javascript, которая реализует PageMethods для вызова метода C # из codebehind.Вот код для кнопок и javascript.
<fieldset id="Fieldset">
<button onclick="SendForm();">Send</button>
<button onclick="CancelForm();">Cancel</button>
</fieldset>
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnablePartialRendering="true" runat="server" />
<script type="text/javascript">
function SendForm() {
var email = $get("txtEmail").value;
PageMethods.SendForm(email, OnSucceeded, OnFailed);
}
function OnSucceeded() {
$get("Fieldset").innerHTML = "<p>Thank you!</p>";
}
function OnFailed(error) {
alert(error.get_message());
}
</script>
Метод codebehind, показанный здесь:
[WebMethod]
public static void SendForm(string email)
{
if (string.IsNullOrEmpty(email))
{
throw new Exception("You must supply an email address.");
}
else
{
if (IsValidEmailAddress(email))
{
bool[] desc = new bool[14];
bool[] local = new bool[14];
bool[] other = new bool[14];
for (int i = 1; i <= 14; i++)
{
desc[i] = ((CheckBox)Page.FindControl("chkDesc" + i.ToString())).Checked;
local[i] = ((CheckBox)Page.FindControl("chkLocal" + i.ToString())).Checked;
other[i] = ((CheckBox)Page.FindControl("chkOther" + i.ToString())).Checked;
/* Do stuff here */
}
}
else
{
throw new Exception("You must supply a valid email address.");
}
}
}
не работает, если он не объявлен как статический.Объявление его как статического не позволяет мне установить флажки на странице, поскольку оно генерирует ошибку «Ссылка на объект требуется для нестатического поля, метода или свойства».Так что моя проблема может быть решена с любого из двух направлений.А) Есть ли способ заставить этот метод работать без объявления его статическим?Б) Как установить флажки, если метод является статическим.