1

这是视图代码,此视图将显示一个列表 preInscription Demande 和两个按钮ValideDelete第一个按钮允许WebmasterTo Inscription,第二个按钮允许 Demande Refuse

<%@ 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预先登记并将数据添加到代理表和用户表的“有效”操作:

[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 ;

4

2 回答 2

0

无需使用表格。使用 actionlink 发送 item.id。

<span class="listbuttons"><%: Html.ActionLink("Valide", "Valide", new {id= item.id}) %> |</span>

并在验证操作中获取 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;
    }
于 2012-04-05T14:23:06.373 回答
0

您出于错误的原因使用 ActionLink ,它不用于传递数据,您应该创建一个<form>然后使用<input type='submit' />

出现问题是因为 3rd 参数ActionLink()是与路由规则一起使用的路由值,它不用于发送数据


从代码示例我认为用户没有输入任何视图只是为了显示页面

如果是这种情况,那么只需将一个 id 传递给ActionLinkController 操作,再次使用该 id 查询来自数据库的所有信息

永远不要依赖用于在页面之间显示目的的传递参数,黑客可以轻松破坏您的应用程序

因此,如果您不希望用户提供信息,只需传递 id 然后在另一个页面中再次查询

于 2012-04-05T14:12:59.100 回答