NancyFx将数据从视图传递到模块

时间:2014-03-21 20:41:50

标签: c# asp.net razor model nancy

您好我想将一些数据从输入标签传递到NancyFx中的模块,因此我可以将其添加到json文件中。到处寻找答案却找不到任何答案。

查看

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<model>
@{
    Layout = "Views/Shared/_Layout.cshtml";
}

<div id="addUser">
    <form name="addUser" method="POST">
        <p>First Name:</p>
        <input type="text" name="user">
        <input type="submit" name="Submit" value="Submit"/>
    </form>
</div>

模块

public class LeaderboardModule : NancyModule
{
    public LeaderboardModule()
    {
        Get["/adduser"] = _ =>
            {
                //var leaderboard = new LeaderboardModule();
                //var users = new List<Users>();

                //users = leaderboard.ReadFile("Users.json");

                //users.Add(new Users() { Id = 7, Name = "John" });

                //var lastItem = users.LastOrDefault();

                //leaderboard.WriteFile("Users.json", users);

                return View["Shared/_AddUser"];
        };

        Post["/adduser"] = _ =>
        {
            var leaderboard = new LeaderboardModule();
            var users = new List<Users>();

            users = leaderboard.ReadFile("Users.json");

            users.Add(new Users() { Id = 7, Name = "John" });

            //var lastItem = users.LastOrDefault();

            leaderboard.WriteFile("Users.json", users);

            return View["Leaderboard"];
        };
    }

    public List<Users> ReadFile(string fileName)
    {
        var users = new List<Users>();

        var readFile = File.ReadAllText(HttpContext.Current.Server.MapPath(fileName));

        users = JsonConvert.DeserializeObject<List<Users>>(readFile);

        return users;
    } 

    public string WriteFile(string fileName, List<Users> users)
    {
        var newUser = JsonConvert.SerializeObject(users, Formatting.Indented);

        File.WriteAllText(HttpContext.Current.Server.MapPath(fileName), newUser);

        return newUser;
    }

这里我只是对数据进行硬编码,但我希望能够从视图的输入中添加数据。感谢。

1 个答案:

答案 0 :(得分:0)

我假设您要发回的数据是用户在user表单字段中输入的内容。在POST处理程序中,您可以这样:

Post["/adduser"] = _ =>
{  
    var user = Request.From.user;
    // do stuff
    return View["Leaderboard"];
}

RequestNancyModule上的媒体资源,FormRequest类型DynamicDictionary上的媒体资源。如果FORM请求中有HTTP POST字段,则Request.Form中的字段可以与页面上的名称相同。

对于小而有效的结帐this,特别是this line