我必须使用数据库第一种方法,解决方案有3个项目。 2是类库,第三是实际的MVC项目。一个类库有edmx设计器。另一个有不同的模型类。这两个库由MVC项目引用。我的问题是该对象没有填充值。我想这是某个地方的命名冲突。对象 tblRDBUser 未填充。数据库中有一个表具有相同的对象名。对象属性也匹配列名。我没有从视图中获取值到控制器。
项目一:
RDB.DataModel, it contains the EDMX designer.
项目二:RDB.Models
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RDB.DataModel;
public class Authenticate
{
public string AuthenticateUser(tblRDBUser User)
{
Book_TradEntities users = new Book_TradEntities();
return (from p in users.tblRDBUsers where p.UserName == User.UserName && p.Password == User.Password select p.UserName).FirstOrDefault();
}
}
项目3:
查看:
@model RDB.DataModel.tblRDBUser
@{
ViewBag.Title = "Index";
}
@Html.TextBoxFor(a => a.UserName)
@Html.TextBoxFor(a => a.Password)
@Html.ActionLink("Login", "Authenticate");
控制器:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using RDB.DataModel;
using RDB.Models;
namespace CignaRDB.Controllers
{
public class RDBWebController : Controller
{
//
// GET: /RDBWeb/
public ActionResult Index()
{
return View();
}
public ActionResult Authenticate(tblRDBUser User)
{
if (ModelState.IsValid)
{
Authenticate user = new Authenticate();
user.AuthenticateUser(User);
return View();
}
return View();
}
}
}
答案 0 :(得分:2)
主要问题。你创建链接@Html.ActionLink("Login", "Authenticate")
后点击他只是将用户重定向到Authenticate方法。在链接中你应该生成按钮,提交你的表格。所以你的视图代码应该是这样的
@model RDB.DataModel.tblRDBUser
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("Authenticate"))
{
@Html.TextBoxFor(a => a.UserName)
@Html.TextBoxFor(a => a.Password)
<input type="submit" value="Login" />
}
此外,您的控制器看起来很奇怪,可能是因为这是代码简化的结果,但至少应该在模型无效时进行下一次更改(return View("Index");
):
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using RDB.DataModel;
using RDB.Models;
namespace CignaRDB.Controllers
{
public class RDBWebController : Controller
{
//
// GET: /RDBWeb/
public ActionResult Index()
{
return View();
}
public ActionResult Authenticate(tblRDBUser User)
{
if (ModelState.IsValid)
{
Authenticate user = new Authenticate();
user.AuthenticateUser(User);
return View();
}
return View("Index");//because view name and Action method not match
}
}
}