将数据插入我的数据库麻烦

时间:2012-04-05 12:39:50

标签: asp.net-mvc ado.net

这是查看代码,此视图将显示preInscription Demande列表和两个按钮ValideDelete第一个允许WebmasterInscription和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">
                    &nbsp;
                  </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 ;

2 个答案:

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