1

これはビューコードです。このビューには、preInscription Demandeと2つのボタンのリストが表示さValideDelete、最初のボタンはWebmasterToをInscription許可し、2番目のボタンは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これは、事前に登録してAgenceテーブルとユーザーテーブルにデータを追加するための「検証」アクションです。

[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を使用している場合、データの受け渡しには使用されません。を作成して<form>から、を使用して送信する必要があります。<input type='submit' />

問題が発生するのは、の3番目のパラメータがActionLink()ルーティングルールで機能するルーティング値であり、データの送信には使用されないためです。


コードサンプルから、ユーザーはページを表示するためだけにビューを入力しなかったと思います

その場合は、IDをに渡すだけActionLinkで、ControllerアクションクエリでIDを使用してデータベースからのすべての情報を再度クエリします。

ページからページへの目的を示すために使用されるパラメータの受け渡しに依存することはありません。ハッカーはアプリを簡単に壊す可能性があります。

したがって、ユーザーからの情報が必要ない場合は、IDを渡してから、別のページでもう一度クエリを実行してください。

于 2012-04-05T14:12:59.100 に答える
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 に答える