Я столкнулся с проблемой, связанной с контролем пользователя с помощью веб-службы. Пожалуйста, помогите мне, я сделал интерфейсный вызов IcustomeClass, у которого есть один метод с именем GetHtml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for ICustomeClass
/// </summary>
public interface ICustomeClass
{
string GetHtml(string controlLocation);
}
У меня есть класс с именем ControlBaseClass, который наследуется от UserControlи ICustomeClass
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for ControlBaseClass
/// </summary>
public class ControlBaseClass : UserControl, ICustomeClass
{
public ControlBaseClass()
{
}
public string GetHtml(string controlLocation)
{
return GetControlHtml(controlLocation);
}
private string GetControlHtml(string control)
{
var controlMarkup = string.Empty;
Page page = new Page();
var customControl = page.LoadControl(control) as UserControl;
if (customControl != null)
{
var htmlForm = new HtmlForm();
var output = new StringWriter();
htmlForm.Controls.Add(customControl);
page.Controls.Add(htmlForm);
HttpContext.Current.Server.Execute(page, output, false);
controlMarkup = output.ToString();
}
return controlMarkup;
}
}
, и у меня есть служба ControlService
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
/// <summary>
/// Summary description for LoadControlService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class LoadControlService : System.Web.Services.WebService
{
public LoadControlService()
{
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string GetControlHtml(string controlLocation)
{
ControlBaseClass controlBase = new ControlBaseClass();
return controlBase.GetHtml(controlLocation);
}
}
, и я использую диспетчер скриптов AJAX на своей странице
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Services/LoadControlService.asmx" />
</Services>
<CompositeScript>
<Scripts>
<asp:ScriptReference Path="~/Scripts/ControlScript.js" />
</Scripts>
</CompositeScript>
</asp:ScriptManager>
<table>
<tr>
<td>
<input id="AddBrandButton" type="button" value="Brand" onclick="GetControl('~/UserControls/AddMovies.ascx')" />
</td>
<td>
<input id="AddConsoleButton" type="button" value="Console" onclick="GetControl('~/UserControls/AddLog.ascx')" />
</td>
</tr>
</table>
<div id="ResultDiv">
</div>
</div>
</form>
</body>
У меня есть Javaкод сценария, который использует веб-сервис для получения пользовательского элемента управления html
/// <reference path="../MainPage.aspx" />
/// <reference name="MicrosoftAjax.js"/>
function GetControl(control) {
LoadControlService.GetControlHtml(control, ControlSuccess, ControlFailure, "");
}
function ControlSuccess(result) {
var div = $get('ResultDiv');
div.innerHTML = result;
}
function ControlFailure(error) {
alert(error);
}
У меня есть две кнопки на моей странице под названием «Добавить фильмы и добавить журнал», когда я нажимаю кнопку, веб-служба возвращает HTML-код элемента управления пользователя и отображает егона странице все работает нормально, теперь моя проблема в том, что когда я нажимаю первую кнопку, появляется пользовательский элемент управления и я добавляю данные в текстовые поля, но когда я нажимаю вторую кнопку, появляется другой пользовательский элемент управления, и предыдущий пользовательский элемент управления исчезает.
Я хочу сохранить данные предыдущих текстовых блоков управления, чтобы я мог сохранить всеДанные в базе данных одним кликом, другими словами, я делаю вкладку управления, которая сохранит все данные в один клик.