我真的看了一下,谷歌搜索了这个网站几天,尝试了一些不同的东西,我找不到答案。
所以,我正在尝试创建一个在购买后显示客户信息的Web应用程序。我正在使用VS2012 express和C#,我决定使用MVC4,主要是因为有一个关于ASP.NET的教程非常接近我想做的事情。我不会要求对我的选择发表任何评论,但也不是不受欢迎的。
因此,管理员将在每天结束时输入所有销售信息。我们将客户电话号码记录为我们销售协议中的帐号,因此我的想法是,为了保持简单,只需使用客户电话号码作为Web应用程序的登录。此外,这样,当客户端登录到站点以查看数据库时,数据库将自动过滤,以便特定客户端只能看到他们的事务。
我遵循的教程是here。
我发现这是需要应用过滤器的点,但我在这方面遇到了很多麻烦。 控制器名为“MainController” 数据库名为“Main”,表是“Mains” “AccountNumber”是db中应与当前用户ID匹配的字段
public ActionResult Index()
{
return View(db.Mains.ToList());
}
据我了解,我必须在上面放置[InitializeSimpleMembership],然后抓取UserId,然后将其定义为过滤器。
答案 0 :(得分:1)
首先,您应该选择以下方式之一:
1)将登录和用户信息保存在单独的表中,让SimpleMembership(SM)执行默认作业。
2)使用现有表来存储用户信息并告诉SM哪个表用于。
方法一:
要处理这种方法,您只需手动创建用户(我认为如此),并为负责创建客户的操作方法添加额外的行:
[HttpPost]
public ActionResult Create(Customer model)
{
if (ModelState.IsValid)
{
db.Customers.Add(model);
try
{
db.SaveChanges();
// here it is ...
WebSecurity.CreateUserAndAccount(model.Phone, model.Password);
}
catch
{
insertError = true;
}
// .. Other codes ...
}
现在,您的客户只需使用手机号码登录该网站即可。作为用户名和密码。
要检索与特定用户相关的项目(当前已登录到网站),只需使用以下查询:
public ActionResult Index()
{
return View(db.Mains.Where(m => m.AccountNumber == User.Identity.Name)
.ToList());
}
如果您还需要接近方法二,请告诉我更新我的答案并将其放在此处