ورود

View Full Version : پیدا کردن userid از طریق user.identity.name



RIG000
چهارشنبه 16 مهر 1393, 22:13 عصر
سلام.
من یه جدول دارم که جدول messge هست اسمش.
این فیلداشه.

[MsgId]
,[MsgTitle]
,[MsgText]
,[MsgDate]
,[UserId]
,[UserReciveId]
حالا میخام اطلاعات توش بریزم.
مشکل. یه اکشن create دارم تو کنترلر message که میخام ازش استفاده کنم.
مشکل اینه که من میخام userid کاربر ثبت بشه. چون از یه طریق ریلیشنش دادم به user تا بعدا" select هایی رو انجام بدم و ...
حالا برای بدست اوردن userid طرف چیکار کنم؟؟ البته کاربر لاگین کرده و میشه از طریق user.identity.name رفت findesh کرد اما چطوری؟
من نمیدونم چطوری بگیرمشو بفرستم و...

@model CodeNevis.Models.Message

@{
ViewBag.Title = "Create";
Layout = "~/Views/_Sheard/_MessageLayout.cshtml";
}

<h2>Create</h2>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Message</legend>

<div class="editor-label">
@Html.LabelFor(model => model.MsgId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MsgId)
@Html.ValidationMessageFor(model => model.MsgId)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.MsgTitle)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MsgTitle)
@Html.ValidationMessageFor(model => model.MsgTitle)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.MsgText)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MsgText)
@Html.ValidationMessageFor(model => model.MsgText)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.MsgDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MsgDate)
@Html.ValidationMessageFor(model => model.MsgDate)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.UserId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserId)
@Html.ValidationMessageFor(model => model.UserId)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.UserReciveId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserReciveId)
@Html.ValidationMessageFor(model => model.UserReciveId)
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>


واینم اکشن هام



public ActionResult Create()
{


ViewBag.UserId = new SelectList(db.Users, "PersonId","PersonName");
return View();

}

//
// POST: /Message/Create

[HttpPost]
public ActionResult Create(Message message)
{
if (ModelState.IsValid)
{
message.MsgDate =Class.PersianDateTime.PersianDate();
db.Messages.Add(message);
db.SaveChanges();
return RedirectToAction("Index");
}

ViewBag.UserId = new SelectList(db.Users, "PersonId", "PersonUserName", message.UserId);
return View(message);
}


خیلی کلافم کرده. مجددا بگم که userid من تو جدول user با userid من تو جدول message باهم ارتباز دارن

RIG000
چهارشنبه 16 مهر 1393, 23:44 عصر
اقا یکیهم به سوال ما جواب بده لطفا. لطفا"

RIG000
پنج شنبه 17 مهر 1393, 00:59 صبح
جهت اطلاع عموم حل شد. اصلا از کنترلر هم میشه به یوزر ایدی دسترسی داشت!!

var userid = db.Users.Where(c => c.PersonUserName == User.Identity.Name).FirstOrDefault().PersonId;

kahkeshane2012
یک شنبه 16 آذر 1393, 10:01 صبح
سلام. جسارتا بنده بحث شما را کامل کنم استاد شاید یکی هم مثله بنده و شما گیر افتاد :لبخندساده:
از یک روش دیگه هم میشه استفاده کرد البته اگر کاربر لاگین کرده باشد شما میتونید با
User.Identity.GetUserId() به userid دسترسی داشته باشید که ما همین جور به یوزر ای دی دسترسی نداریم ابتدا باید پکیج آن را از سایت ناگت دانلود کنیم که تحت عنوان
install-package Microsoft.AspNet.Identity.owin -version 2.1.0 و بعد فضای نام

using Microsoft.AspNet.Identity; اضافه کنید.
موفق و پاینده باشید.