这是查看代码,此视图将显示preInscription Demande列表和两个按钮Valide
和Delete
第一个允许Webmaster
到Inscription
和seconde one to Refuse
Demande。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<J2V.Models.preinscrit>>" %>
// some Html Code
<% foreach (var item in Model) { %>
<li>
<div class="listinfo">
<h3>
<%: Html.DisplayFor(modelItem => item.Nag) %>
</h3>
<p>
<%: Html.DisplayFor(modelItem => item.Idag) %>
</p>
<span class="price"> <%: Html.DisplayFor(modelItem => item.Adrag) %> <%: Html.DisplayFor(modelItem => item.Vilag) %> <%: Html.DisplayFor(modelItem => item.Gov) %></span> <span class="media">Tel : <%: Html.DisplayFor(modelItem => item.Telag) %> |</span> <%: Html.DisplayFor(modelItem => item.Mailag) %>
</div>
<div class="listingbtns">
<span class="listbuttons"><%: Html.ActionLink("Valide", "Valide", new {mod= item}) %> |</span>
<span class="listbuttons"><%: Html.ActionLink("Supprime", "Delete", new { id=item.Idag }) %></span>
</div>
<div class="clear">
</div>
</li>
<% } %>
这是允许Validate
预处理并将数据添加到Agence表和用户表的“Valide”操作:
[HttpGet]
public ActionResult Valide(Models.preinscrit model )
{
var db = new Models.J2VEntities();
Models.agence ag = new Models.agence();
Models.user user = new Models.user();
ag.Adrag = model.Adrag ;
ag.Gov = model.Gov ;
ag.Idag = model.Idag;
ag.Mailag = model.Mailag;
ag.Nomag = model.Nag;
ag.Vilag = model.Vilag;
user.IsAdmin = false;
user.iduser = model.Idag;
user.password = Models.LogModel.register.CreateRandomPassword();
db.AddTouser(user);
db.AddToagence(ag);
return View("index");
}
当我点击我的视图页面上的Valide
时,我收到此错误:
System.NullReferenceException
此行ag.Adrag = model.Adrag ;
答案 0 :(得分:0)
您使用ActionLink的原因是错误的,它不用于传递数据,您应该使用<form>
然后使用<input type='submit' />
提交
问题发生是因为ActionLink()
中的第3个参数是与路由规则一起使用的路由值,它不用于发送数据
从代码示例中我认为用户没有为了显示页面而输入任何视图
如果是这种情况,那么只需将id传递给ActionLink
并在Controller操作中再次使用id
永远不依赖于从页面到页面传递用于显示目的的参数,黑客可以轻松破坏您的应用
所以,如果你不想要用户提供的信息,只需传递id,然后再在另一页中查询
答案 1 :(得分:0)
无需使用表格。使用actionlink发送item.id。
<span class="listbuttons"><%: Html.ActionLink("Valide", "Valide", new {id= item.id}) %> |</span>
并在valide操作中获取id并通过item.id获取数据库中的模型
public ActionResult Valide(int id )
{
var db = new Models.J2VEntities();
Models.agence ag = new Models.agence();
Models.user user = new Models.user();
//select from databese by id and valide
ag.Adrag = model.Adrag ;
ag.Gov = model.Gov ;
ag.Idag = model.Idag;
ag.Mailag = model.Mailag;
ag.Nomag = model.Nag;
ag.Vilag = model.Vilag;
user.IsAdmin = false;
user.iduser = model.Idag;
user.password = Models.LogModel.register.CreateRandomPassword();
db.AddTouser(user);
db.AddToagence(ag);
return View("index");
}
此代码来自我的项目:
//select list by id
public IEnumerable<makale> select_makaleler_by_kategori(int kategori_id)
{
IEnumerable<makale> makale = (from m in entity.makale
where m.kategori_id == kategori_id
orderby m.olusturma_tarihi
select m).ToList<makale>();
return makale;
}
//select one element by id
public makale select_makale(int makale_id)
{
makale makale = (from m in entity.makale
where m.makale_id == makale_id
select m).SingleOrDefault();
return makale;
}