View Full Version : سوال: ارسال مقدار یک متغیر به وسیله فرم
Black_Hammer
چهارشنبه 19 آبان 1395, 15:41 عصر
آیا این امکان وجود دارد که مقدار یک متغیر که از طریق Model به view ارسال شده و نمایش داده شده و حالا مقدار اون متغیر رو به وسیله مقادیر دیگر که در یک فرم مقدار دهی شده اند را به یک اکشن دیگر بفرستیم که اون اکشن مقادیر فرم را به صورت binde در یافت می کند ؛ ارسال کنیم. فکر می کنم باید کنار متغیری که فرم به اون bind شده یک متغیر دیگر برای دریافت اون ایجاد کنیم. اگه درسته می شه بفرمایید که چطور می توانیم اون متغیر که به وسیله فرم ارسال شده را به متغییر اضافی اکشن منتصب کنیم؟ اگه هم که این راه درست نیست می شه بفرمایید که راه درست چیست؟
public ActionResult Relation([Bind:(Include = "Name, Text")] className value, int ezafi)
{
}
چطور می تونم متغیر اضافی رو مقدار دهی کنم؟ ممنون می شم راهنمایی بفرمایید
Moien Tajik
چهارشنبه 19 آبان 1395, 19:39 عصر
یکم بد پرسیدی ، فکر کنم منظورت اینه که کناره پارامتر ورودی مدل چطوری چیزی غیر از مدل رو بگیریم .
همون شکلی که خودت نوشتی درسته ، فرض کن تو View دو input از نوع file داریم + یه سری text input که توسط Scaffolding برای مدل ساخته شده که داخل یه form هستن .
وقتی فایل رو برای دوتا input انتخاب میکنیم و submit رو میزنیم علاوه بر اطلاعات textbox های قبلی که به مدل مربوط هستش ، میتونیم اون فایل ها رو هم در اکشن دریافت کنیم و از upload و uploadImage استفاده کنیم .
به این شکل :
ویو :
<div class="form-group">
@Html.Label("uploadImage", new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input type="file" id="uploadImage" name="uploadImage" />
</div>
</div>
<div class="form-group">
@Html.Label("upload", new {@class = "control-label col-md-2"})
<div class="col-md-10">
<input type="file" id="upload" name="upload"/>
</div>
</div>
کنترلر :
public ActionResult Create([Bind(Include = "Id,Name,Version,DownloadCount,Description,ShowToUs ers")] RegisterFile registerFile , HttpPostedFileBase upload , HttpPostedFileBase uploadImage)
{
// .....
}
اگر منظورتون چیزه دیگه ای بود بپرسید . :چشمک:
Black_Hammer
چهارشنبه 19 آبان 1395, 23:48 عصر
یکم بد پرسیدی ، فکر کنم منظورت اینه که کناره پارامتر ورودی مدل چطوری چیزی غیر از مدل رو بگیریم .
همون شکلی که خودت نوشتی درسته ، فرض کن تو View دو input از نوع file داریم + یه سری text input که توسط Scaffolding برای مدل ساخته شده که داخل یه form هستن .
وقتی فایل رو برای دوتا input انتخاب میکنیم و submit رو میزنیم علاوه بر اطلاعات textbox های قبلی که به مدل مربوط هستش ، میتونیم اون فایل ها رو هم در اکشن دریافت کنیم و از upload و uploadImage استفاده کنیم .
به این شکل :
ویو :
<div class="form-group">
@Html.Label("uploadImage", new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input type="file" id="uploadImage" name="uploadImage" />
</div>
</div>
<div class="form-group">
@Html.Label("upload", new {@class = "control-label col-md-2"})
<div class="col-md-10">
<input type="file" id="upload" name="upload"/>
</div>
</div>
کنترلر :
public ActionResult Create([Bind(Include = "Id,Name,Version,DownloadCount,Description,ShowToUs ers")] RegisterFile registerFile , HttpPostedFileBase upload , HttpPostedFileBase uploadImage)
{
// .....
}
اگر منظورتون چیزه دیگه ای بود بپرسید . :چشمک:
خوب سوال بنده این نبود ولی ممنون که گفتیم چون این رو هم بلد نبودم و یاد گرفتم ممنون:قلب:
و اما سوال خودم
من دارم یک سایت دانلودی می نویسم وقتی کاربر روی یک محصول که به صورت پیش نمایش نشان داده شده کلیک می کند من توی اکشن مربوطه می رم اطلاعات کاملش رو براساس Id محصول از پایگاه داده استخراج می کنم و با استفاده از modelView در view به نمایش در می آورم. توی این قسمت که اطلاعات کامل محصول رو نمایش می دم یک قسمت گذاشتم که کاربرها بتونن یک کامنت بزارن اما برای منتصب کردن اون کامنت به همون محصول مورد نظر باید از ID اون محصول استفاده کنم حالا سوال بنده اینکه چطور می تونم id اون محصول رو به همراه متن کامنت ، نام و ایمیل توی اکشن دریافت کنم بازم ممنون می شم که راهنمایی بفرمایید.
اما یک سوال دیگه برام پیش امده آیا این امکان وجود داره که یک متغییر که توی اکشن مقدار دهی شده و به ویو ارسال شده رو به یک متغییر دیگه توی جاوااسکریپت منتسب کنیم ؟
داداش واقعا دمت گرم که جواب می دی خیلی از مشکلاتم رو حل کردی (درود) :قلب:
Moien Tajik
پنج شنبه 20 آبان 1395, 04:36 صبح
با استفاده از TempData میتونی همونجا که کاربر رو میبری که اطلاعات کامل یه محصول رو ببینه ، آیدی اون رو نگه داری و بعد از اون آیدی بعنوان ProductID استفاده کنی .
یه پروژه ساده برای همین چیزی که میخوای نوشتم که نحوه انجامش رو بفهمی ، بعد دانلود چک کن Connection String درست باشه : http://uplod.ir/k3tsylw18mow/commentTest.zip.htm
اما یک سوال دیگه برام پیش امده آیا این امکان وجود داره که یک متغییر که توی اکشن مقدار دهی شده و به ویو ارسال شده رو به یک متغییر دیگه توی جاوااسکریپت منتسب کنیم ؟
وقتی تو ویو مقدارش رو دریافت میکنی ، راحت با Razor میتونی اون مقدار رو به یه متغییر تو JavaScript نسبت بدی . به این شکل :
@model WebApplication1.Models.Product
...
<script type="text/javascript">
var test = @Model.Title;
</script>
Black_Hammer
پنج شنبه 20 آبان 1395, 14:02 عصر
با استفاده از TempData میتونی همونجا که کاربر رو میبری که اطلاعات کامل یه محصول رو ببینه ، آیدی اون رو نگه داری و بعد از اون آیدی بعنوان ProductID استفاده کنی .
یه پروژه ساده برای همین چیزی که میخوای نوشتم که نحوه انجامش رو بفهمی ، بعد دانلود چک کن Connection String درست باشه : http://uplod.ir/k3tsylw18mow/commentTest.zip.htm
وقتی تو ویو مقدارش رو دریافت میکنی ، راحت با Razor میتونی اون مقدار رو به یه متغییر تو JavaScript نسبت بدی . به این شکل :
@model WebApplication1.Models.Product
...
<script type="text/javascript">
var test = @Model.Title;
</script>
خیلی ممنون از راهنماییت از این پروژه می تونم به عنوان یه رفرنس برای identity استفاده کنم ولی راه حل من این نبود من برای این کار می تونم از یک inpute type="hidden" استفاده کنم و مقدار id محصول رو به action بفرستم اما چرا .mdf پروژه رو نفرستادی ولی توی connection string ان رو atach کردیش.
Moien Tajik
پنج شنبه 20 آبان 1395, 15:59 عصر
چون اطلاعات زیادی نداشت که اونارم بزارم ، بعنوان یه Sample براتون گذاشتم . :چشمک:
شما یه محصول ( Product ) ایجاد کنید ، در صفحه اصلی به صفحه اطلاعات کامل اون محصول برید ، میتونید براش نظر بزارید .
در اکشنتون شما عنوان و متن نظر رو گرفتید و ID محصول رو جداگانه با TempData یا HiddenFor میگیرید .
دیتابیس رو وقتی چک کنید میبینید که در جدولی که Comment ها هستش ، یه ProductID هم هست که مشخص میکنه کدوم نظر برای کدوم محصول هستش .
Black_Hammer
پنج شنبه 20 آبان 1395, 20:26 عصر
چون اطلاعات زیادی نداشت که اونارم بزارم ، بعنوان یه Sample براتون گذاشتم . :چشمک:
شما یه محصول ( Product ) ایجاد کنید ، در صفحه اصلی به صفحه اطلاعات کامل اون محصول برید ، میتونید براش نظر بزارید .
در اکشنتون شما عنوان و متن نظر رو گرفتید و ID محصول رو جداگانه با TempData یا HiddenFor میگیرید .
دیتابیس رو وقتی چک کنید میبینید که در جدولی که Comment ها هستش ، یه ProductID هم هست که مشخص میکنه کدوم نظر برای کدوم محصول هستش .
بله همین طور هست
یک سوال دیگه داشتم آیا این راه دوستی برای مقدار دهی اتریبیوت ها inpute element می باشد به کمک html helper می باشد
@Html.TextBoxFor(current => current.AnswerForForm.Email, htmlAttributes: "email, required")
یا چطور می شه با استفاده از htmlHelper اتریبیوت value یک تکس باکس رو مشخص کنیم یا اتریبیوت ها type های دیگه رو .
Moien Tajik
جمعه 21 آبان 1395, 00:13 صبح
تو html helper ها به این شکل attribute اضافه میکنن که یه @ میزارن بعد attribute مورد نظر ، برای مثال به این شکل :
@Html.EditorFor(model => model.ContactUs.Name, new { htmlAttributes = new { @id = "name", @placeholder = "Your Name..." , @value = "Default Value" } })
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.