ASP .NET中的POST-> REDIRECT-> GET模式问题

时间:2019-07-12 21:23:03

标签: c# asp.net asp.net-webpages

我正在尝试在ASP .NET网页中制作简单的规则页面(使用C#,它显示所有规则(字符串列表),然后让您添加,然后立即将它们添加到已打印的规则中。(仅出于教育目的) ) 我知道我应该使用POST-> REDIRECT-> GET模式并在会话数据中存储字符串列表,尽管我可以准确地获取这些数据-我尝试的任何操作都以错误结尾,例如:代码错误CS1002: ;预期在第40行(这很奇怪,因为我也检查了该行以及其他代码,而且我没有发现任何遗漏的分号...我认为这可能是由于某些代码工作与预期不同引起的)... / p>

这是我尝试过的代码的一个版本:

@{
    Layout = null;
    var rules = new List<string>();
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
</head>
<body>



    <form action="~/Rules.cshtml" method="Post">
        <p>
            <label for="name">New rule</label><br>
            <input type="text" name="rule">
        <p><input type="submit" value="Add"></p>
        </p>
    </form>

    @{
        if (Session["rules"] == null)
        {

            Session["rules"] = rules;
        }

        if (IsPost)
        {
                rules = new List<string>();
                foreach (var i in (List<string>)System.Web.HttpContext.Current.Request.Session["rules"])
                {
                    rules.Add(i);
                }
                rules.Add(Request.Form["rule"]);
                List<string>System.Web.HttpContext.Current.Request.Session["rules"] = rules;
            }

        }

    }


    <ul>
        @{ foreach (var x in Request.Session["rules"])
            {
                <li>@x</li>
            }

        }
    </ul>

</body>
</html>

Rules.cshtml显然是带有此代码的文件。 (我知道,每次重新创建整个列表都不是最佳的解决方案,但是我没有找到任何不同的方法...如果您有解决方案,我欢迎您提出建议)

0 个答案:

没有答案