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;
}
这里我只是硬编码的数据,但我希望能够从视图的输入添加数据。谢谢。
我假设您想要发送回的数据是用户在user
表单字段中键入的任何数据。在POST
处理程序中,您可以这样做:
Post["/adduser"] = _ =>
{
var user = Request.From.user;
// do stuff
return View["Leaderboard"];
}
Request
是NancyModule
上的属性,Form
是DynamicDictionary
类型的Request
上的属性。当HTTP POST
请求中有FORM
字段时,它们将在Request.Form
中以与页面上相同的名称访问。
对于小而有效的代码,请查看这一行