C# MVP中的会话管理-简化示例

C# MVP中的会话管理-简化示例,c#,asp.net,.net,webforms,mvp,C#,Asp.net,.net,Webforms,Mvp,我在asp页面中有一个文本框,它是一个具体的视图。用户输入2000个字符长的字符串。按下“保存”按钮时,此值将保存到数据库中。保存页面后,我重定向到另一个页面,其中输入的值显示为标签。我曾经在会话中存储文本框的值。当我在MVP中使用它时,我如何处理它 1) 如何在TextInputPage中使用MVP概念设置会话的值 2) 如何在使用MVP概念读取会话后在标签中显示结果 注意:在向会话添加值之前,需要进行一些处理(文本追加) 如果您能用代码示例而不是指向另一篇文章来回答,那就太好了。对于新手来说

我在asp页面中有一个文本框,它是一个具体的视图。用户输入2000个字符长的字符串。按下“保存”按钮时,此值将保存到数据库中。保存页面后,我重定向到另一个页面,其中输入的值显示为标签。我曾经在会话中存储文本框的值。当我在MVP中使用它时,我如何处理它

1) 如何在TextInputPage中使用MVP概念设置会话的值

2) 如何在使用MVP概念读取会话后在标签中显示结果

注意:在向会话添加值之前,需要进行一些处理(文本追加)

如果您能用代码示例而不是指向另一篇文章来回答,那就太好了。对于新手来说,这是最简单的例子(我认为:-)

using System;
namespace ViewInterfaces
{
public interface ITextView
{
    string InputtedText { get; }
    event EventHandler ButtonClickedEvent;
}
}

}

}

参考资料:

我通常使用下一种方式:

public interface ITextView
{
    string InputtedText { get; }
    string SessionTextEntry { get; set; }
    void RedirectToTestPage();

    event EventHandler ButtonClickedEvent;
}
查看实现:

public partial class TextInputPage : System.Web.UI.Page, ITextView
{
    ...

    public string SessionTextEntry 
    { 
        get { return (string)Session["TextInput"]; }
        set { Session["TextInput"] = value; }
    }

    public void RedirectToTestPage()
    {
        Response.Redirect("/SessionTestWebSite/ResultOutputPage.aspx");
    }

    ...
}
演示者:

public class TextPresenter
{
    ...

    void DetailView_EditClicked(object sender, EventArgs e)
    {
        //Calling Model's Functionality
        contactsModelController.StoreText(viewObj.InputtedText);

        // Save to session and redirect
        viewObj.SessionTextEntry = GetTextForSession(viewObj.InputtedText);
        viewObj.RedirectToTestPage();
    }

    // data processing logic
    private string GetTextForSession(string inputtedText)
    {
        if (inputtedText.Length > 0 && inputtedText.Length <= 100)
            return "1-100 " + inputtedText;

        if (inputtedText.Length > 100 && inputtedText.Length <= 1000)
            return "101-1000" + inputtedText;

        return "1001 - 2000" + inputtedText;
    }

    ...
}
公共类TextPresenter
{
...
void DetailView\u EditClicked(对象发送方,事件参数e)
{
//调用模型的功能
contactsModelController.StoreText(viewObj.InputedText);
//保存到会话并重定向
viewObj.SessionExtentry=GetTextForSession(viewObj.InputedText);
viewObj.RedirectToTestPage();
}
//数据处理逻辑
私有字符串GetTextForSession(字符串InputedText)
{

如果(输入文本)长度>0 & &输入文本长度100和输入文本。长度只是一个问题:为什么不考虑移动到ASP.NET MVC模式?好处将回报你在学习和修改代码方面的投资。我想学习MVP((-))此外,我们当前的项目正在使用MVP。由于合同问题,不可能将其更改为MVC。我明白了,请尽快尝试切换。MVC模式非常适合web应用程序,而MVP有很多摩擦和“仪式代码”。此外,页面运行速度更快,可测试性更容易。也许升级路径可以将MVC部分添加到您的解决方案中。它可以与aspx页面并排工作。现在我停止,因为我要脱离主题:-)
namespace Model
{
public class TextModel
{
    public void StoreText(string inputString)
    {
        //Store to database
    }

}
public interface ITextView
{
    string InputtedText { get; }
    string SessionTextEntry { get; set; }
    void RedirectToTestPage();

    event EventHandler ButtonClickedEvent;
}
public partial class TextInputPage : System.Web.UI.Page, ITextView
{
    ...

    public string SessionTextEntry 
    { 
        get { return (string)Session["TextInput"]; }
        set { Session["TextInput"] = value; }
    }

    public void RedirectToTestPage()
    {
        Response.Redirect("/SessionTestWebSite/ResultOutputPage.aspx");
    }

    ...
}
public class TextPresenter
{
    ...

    void DetailView_EditClicked(object sender, EventArgs e)
    {
        //Calling Model's Functionality
        contactsModelController.StoreText(viewObj.InputtedText);

        // Save to session and redirect
        viewObj.SessionTextEntry = GetTextForSession(viewObj.InputtedText);
        viewObj.RedirectToTestPage();
    }

    // data processing logic
    private string GetTextForSession(string inputtedText)
    {
        if (inputtedText.Length > 0 && inputtedText.Length <= 100)
            return "1-100 " + inputtedText;

        if (inputtedText.Length > 100 && inputtedText.Length <= 1000)
            return "101-1000" + inputtedText;

        return "1001 - 2000" + inputtedText;
    }

    ...
}