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

本文关键字:模块 视图 数据 NancyFx | 更新日期: 2023-09-27 17:51:19

嗨,我想传递一些数据从输入标签到我的模块在NancyFx,所以我可以把它添加到json文件。到处寻找答案,但一无所获。

<

视图/strong>

@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>
<

模块/strong>

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;
    }

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

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

我假设您想要发送回的数据是用户在user表单字段中键入的任何数据。在POST处理程序中,您可以这样做:

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

RequestNancyModule上的属性,FormDynamicDictionary类型的Request上的属性。当HTTP POST请求中有FORM字段时,它们将在Request.Form中以与页面上相同的名称访问。

对于小而有效的代码,请查看这一行