Hirdetés

Új hozzászólás Aktív témák

  • ubid

    őstag

    Sziasztok!

    Ismét egy kis segítséget szeretnék kérni = ) Kicsit bonyolultabb elmagyarázni, de remélem megértitek mi a problémám, és tudtok segíteni is !
    Előre is köszönöm !

    Tehát :

    Egy asp.net mvc3 webalkalmazás darabját készítem jelenleg. A feladat : Események létrehozása, majd miután létrehoztuk az eseményeket visszadob egy lapra, ahol az események listája látszik. minden eseményhez van egy link, ami tulajdonképpen a details- lapja, viszont ott alatta lehet kommentelni az adott eseményt. ( természetesen mindent adatbázisba mentünk le az eseményeket az események táblába, a kommenteket a komment táblába, viszont kapcsolat nem lehet közöttük, mert az alkalmazás során máshova is kell majd kommentelni )

    Ezt , hogy oda varázsolja a komment felületet egy a details view-ba varázsolt RenderAction-el oldottam meg.
    így : @{Html.RenderAction("CommentCreate", "Comment");}

    Mivel a details lapon van a kommentelő felület ( ide listázza ki, és alatta van egy form is, ahol beírható a komment és küldhető ) ezért nyilván ide is postol vissza, ezért ennek a controllerébe ( jelen esetben ez az event controller ) írtam a details-hoz egy HTTP-s actionresult-ot, aminél kezdődik a gond.

    Az a problémám, hogy valamiért az event ID-jét egyből belenyomja nekem kérés nélkül a komment ID-jába, amitől nyilván több kommentet nem is vihetek fel, mert ütközés van.
    ( a kommentnek van egy TARGETID-ja ami nem egyedi, én ebbe szeretném, hogy megjelenjen az adott esemény ID-ja abból a célból, hogy minden esményhez csak a hozzá tartozó kommenteket listázza ki )

    A kód így néz ki : public ViewResult Details(int id,Comment newComment)
    ebben ugye azért írtam be az ID-t mert szeretném , hogy a TARGETID-ba majd ez bekerüljön ( ez így rendben is van szerintem, mert az URL-be már úgyis benne van az esmeényünk ID-ja , ezáltal bele is tudom rakni a TARGETID-ba.
    Viszont a sima ID ( aminek csak akkor kéne értéket kapnia amikor mentődik az adatbázisba, mivel ott számolódik ki (PK) )

    a kód további része így néz ki :

    {
    newComment.Added = DateTime.Now;

    MembershipUser currentUser = Membership.GetUser();
    Guid userId = new Guid(currentUser.ProviderUserKey.ToString());
    newComment.UserID = userId;

    newComment.TargetID = id;

    db.Comments.AddObject(newComment);
    db.SaveChanges();

    return View();
    }

    Mutatok egy képet is, hogy lássátok miről beszélek :

    Tehát látható, hogy még a db save-ig el se jutott, de már ott felvette azt az ID-t ami nem is az övé lénne.

    A partial-view-nak pedig így néz ki az érdemi része :

    @foreach (var item in Model) {
    <tr>
    <td>
    @Html.DisplayFor(modelItem => item.TargetID)
    </td>
    <td>
    @Html.DisplayFor(modelItem => item.TargetType)
    </td>
    <td>
    @Html.DisplayFor(modelItem => item.Text)
    </td>
    <td>
    @Html.DisplayFor(modelItem => item.UserID)
    </td>
    <td>
    @Html.DisplayFor(modelItem => item.Added)
    </td>
    <td>

    @Html.ActionLink("Delete", "Delete", new { id=item.ID })
    </td>
    </tr>
    }

    </table>

    @using (Html.BeginForm())
    {
    <textarea rows="5" cols="30" id="text" name="text"></textarea>
    <input type="submit" value="Küldés" />
    }

    Aki tud segítsen , hogy miért lehet ez.

    Előre is köszönöm!

    -.-

Új hozzászólás Aktív témák