PDA

View Full Version : تو تموم شدن پروژم به من کمک کنید ::: MVC4



lordesiah
سه شنبه 03 اردیبهشت 1392, 03:40 صبح
من دارم یه سایت مینویسم با MVC4
جدورلام اوکی شده فقط کد نویسیش من گیر دارم قسمتاییشش رو
اولین مشکلم رو بگم اینکه واسه ایجاد کاربری یه کلاسRegisterModel دارم که تمامی مشخصاتی که باید بگیره رو اونجا گذاشتم (نام کاربری و رمز و نوع عضویت ****و شهر محل زندگی و آدرس و نام شرکت و فعالیت شرکت و تلفن و همراه و تاریخ تولد )
و یکی از گیرایی که من دارم اینه که نوع عضویت : 1- کارجو 2- کارفرما
میخوام وقتی تیک کارجو زده میشه یه قسمتایی از فرم نشون داده بشه و یه قسمتایی نشون داده نشه و همینطور واسه کارفرما ...
من تیکه کد جی کوئری نوشتم ولی ج که میخواستم رو نداد یعنی وقتی کلیک میکنم روی گزینه دیگه ای فرم رو رفرش نمیکنه و عوضش نمیکنه
یه کمکی پیشنهادی چیزی به ما میکنید ...

از کسایی که جی کوئری بلدن هم تقاضای کمک دارم

lordesiah
سه شنبه 03 اردیبهشت 1392, 20:45 عصر
منتظرم ... خیلی منتظرم نذارید

lordesiah
سه شنبه 03 اردیبهشت 1392, 21:42 عصر
واقعا سایت برنامه نویسیهه؟؟؟؟ (O.O)
برنامه نویسامون کوشن؟؟؟؟

shima3000
سه شنبه 03 اردیبهشت 1392, 21:46 عصر
دوستی حیف ک بلد نیسم!!
وگرنه کمکتون میکردم!!:ناراحت:

اینجا خیلیا بلدن ولی متاسفانه............!!!

ایشالا یکی پیدا شه کمکتون کنه!

lordesiah
سه شنبه 03 اردیبهشت 1392, 21:58 عصر
چه جالب فکر میکردم چنین سایتی باید پاسخگو باشه ... 3 4 ساله که عضو این سایتم هیچ وقت ندیده بودم کسی ج سوالش رو درست بگیره ...
واقعا جای تاسف داره ...
اشتباه کردم که سوالم رو عنوان کردم ...

ممنون شیما بابت پاسخ صادقانه تون :)..

mo.esmp
سه شنبه 03 اردیبهشت 1392, 23:22 عصر
دوست عزیز قرار نیست ایبجا کسی واسه شما کد بزنه همونتور که خود شما این کار نمیکنید. شما یک سئوال کلی پرسیدین بعد هیچ جزییاتی از کدتون رو هم نزاشتین که ببینیم کجای کار مشکل داره.
توسیه من اینه که اول کلاستون رو به چند زیر کلاس دیگه بشکنید مسلن یک کلاس واسه اتلاعات کاربری،یک کلاس واسه پروفایل و یک کلاس هم واسه واسه نوع عزویت. این ٣تا کلاس رو میتونین تو یک کلاس دیگه بزارید که منزورم همون ViewModel است، با نام AccountViewModel.
این کلاس رو به View پاس بده و برا اساس تیک همنتوری که خودت گفتی با زدن تیک یه قسمتی از فرم پنهان و قسمت دیگه نشون داده بشه. البته لزومی نداره از چیزی که من گفتم پیروی کنی.
حالا بگردین سر جی کوئری. برای اینکه کدوم قسمت فرم نشون داده بشه ٢تا دکمه رادیویی بزار یکی برای کارفرما و یکی برای کارجو.

<input type="radio" name="AccountType" id="employer">Male
<input type="radio" name="AccountType" id="jobSeeker">Female
حالا اون ٢ قسمت از فرم رو بسورت جداگانه تو یه ٢تا تگ div بزار و به هر کدوم یه id بده employerContainer و jobSeekerContainer

$('#employer').click(function () {
var divEmployer = $('#employerContainer');
divEmployer.slideDown(500);
divEmployer.css('display', 'block');
var divJobSeeker = $('#jobSeekerContainer');
divJobSeeker.slideUp(300);
divJobSeeker.css('display', 'none');
});

$('#jobSeeker').click(function () {
var divJobSeeker = $('#jobSeekerContainer');
divJobSeeker.slideDown(500);
divJobSeeker.css('display', 'block');
var divEmployer = $('#employerContainer');
divEmployer.slideUp(300);
divEmployer.css('display', 'none');
});

lordesiah
چهارشنبه 04 اردیبهشت 1392, 01:57 صبح
ممنون دوست گرامی ...
به نظرم سوالم بزرگ نبود و من بجای کد توضیحات رو دادم ...
البته شما پاسخی که میخواستم رو داددید امیدوارم که ج بده ... ممنون
یه قسمتی رو متوجه نشدم شما نظرتون اینه که viewmodel ایجاد کنم ؟؟ چرا؟؟چون ریز بشه؟؟
سوال دیگه ام اینه که الان که با تگ ما نوشتیم تا توی جی کوئری بتونیم ازش استفاده کنیم ... چطور مقدارش رو توی کنترلر متوجه بشم ... از کنترلر چطور به این مقدار دسترسی پیدا کنم ؟؟؟
مثلا وقتی اینطوری مینویسیم دسترسی داریم:

@html.radiobuttonfor(m=>m.Model,false,new{id="employer})
ولی وقتی تگ input مینویسیم چطور دسترسی پیدا کنم ؟؟

lordesiah
چهارشنبه 04 اردیبهشت 1392, 03:19 صبح
کد پیشنهادی شما رو هم زدم باز ج نداد
ببینید من قبلش اینطور نوشته بودم

$(document).ready(function () {
if ($('#employerRadio').is(':checked')) {
alert('E');
$('#employerSection').show();
$('#jobSeekerSection').hide();
}
if ($('#jobSeekerRadio').is(':checked')) {
alert('J');
$('#jobSeekerSection').show();
$('#employerSection').hide();

}
});



<div style="color: red" >
<h2 style="font-family: Arial"> @Html.LabelFor(m => m.KindOfMembership) </h2> <br/>
@Html.Label("Employer", "کارفرما")
<input id="employerRadio" type="radio" name="KindOfMembership" value="@Model.KindOfMembership" checked="checked" />
@Html.Label("JobSeeker", "کارجو")
<input id="jobSeekerRadio" type="radio" name="KindOfMembership" value="@Model.KindOfMembership" />
</div>


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

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


<div id="employerSection" >
<div class="editor-label">
@Html.LabelFor(model => model.ActivitiesCompany)
</div>

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

<div class="editor-label">
@Html.LabelFor(model => model.CompanyName)
</div>

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

<div class="editor-label">
@Html.LabelFor(model => model.WebSite)
</div>

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

</div>

ولی ج که میده فقط کارفرما رو نشون میده که تیک خورده حالا اگه من پیش فرض تیک خورده رو عوض کنم بکنم کارجو اونو نشون میده ولی نمیخوام من دست بزنم باید با توجه به انتخاب کاربر عوض شه و تیکه ای رو نشون بده یا نشون نده

mo.esmp
چهارشنبه 04 اردیبهشت 1392, 17:36 عصر
چیزی که من نوشتم فقت برای مسال بود و شما همون کد خودت که میخای مقدارش برگردونی استفاده کن
@html.radiobuttonfor(m=>m.Model,false,new{id="employer})


کد پیشنهادی شما رو هم زدم باز ج نداد
ببینید من قبلش اینطور نوشته بودم

$(document).ready(function () {
if ($('#employerRadio').is(':checked')) {
alert('E');
$('#employerSection').show();
$('#jobSeekerSection').hide();
}
if ($('#jobSeekerRadio').is(':checked')) {
alert('J');
$('#jobSeekerSection').show();
$('#employerSection').hide();

}
});


کدی که شما زدی فقت یک بار اونم وقتی سفحه بارگزاری میشه چک میکنه که کدوم یکی تیک خوده و بر اساس اون یک رو نمایش و دیگری پنهان میکنه. شما باید اینجا از رویداد click استفاده کنی دوست عزیز. اگه پیشفرز کارفرما تیک خورده قسمت اون در سفحه نمایش و قمست کارجو رو با css پنهان میکنی و بعد بر اساس اینکی کدوم دوکمه رادیو کلیک میخوره یکی رو نمایش میدی.

lordesiah
چهارشنبه 04 اردیبهشت 1392, 20:02 عصر
مشکل همینه که من با click هم تست کردم باز ج نداد به من
میدونم مثال زدید برام ولی واسه این پرسیدم که وقتی به این صورت

@html.radiobuttonfor(m=>m.Model,false,new{id="empl oyer})
مینویسم تو جی کوئری id این رو نمیشناسه

ممنون باز من تست میکنم... نا امید نمیشم :لبخند:

mo.esmp
چهارشنبه 04 اردیبهشت 1392, 20:12 عصر
میشه کلاس RegisterModel رو بزاری

lordesiah
چهارشنبه 04 اردیبهشت 1392, 20:30 عصر
public class RegisterModel
{
[Required(ErrorMessage = "وارد کردن نام کاربری الزامی است")]
[Display(Name = "نام کاربری")]
[Remote(action: "CheckUserName", controller: "Account", HttpMethod = "POST", ErrorMessage = "نام کاربری انتخابی شما تکراری است لطفا با نام کاربری دیگری سعی کنید")]
public string UserName { get; set; }

[Required(ErrorMessage = "لطفا رمز عبور را وارد کنید")]
[StringLength(100, ErrorMessage = " طول {0} باید از {2} کاراکتر بیشتر باشد", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "رمز عبور")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "تایید رمز عبور")]
[Compare("Password", ErrorMessage = "رمز با تایید آن ، یکسان نیست")]
public string ConfirmPassword { get; set; }

[Display(Name = "نام")]
[Required(ErrorMessage = "نام خود را وارد کنید")]
public string FirstName { get; set; }

[Display(Name = "نام خانوادگی")]
[Required(ErrorMessage = "نام خانوادگی خود را وارد کنید")]
public string LastName { get; set; }

[Display(Name = "نوع عضویت")]
public bool KindOfMembership { get; set; }

[Display(Name = "تاریخ تولد")]
[DataType(DataType.Date ,ErrorMessage = "تاریخ مناسب وارد کنید")]
[MyDateValidator(MinYear = 1920, ErrorMessage = "لطفا تاریخ را صحیح وارد کنید")]
public DateTime BirthDayTime { get; set; }

[Display(Name = "آدرس پست الکترونیکی")]
[Required(ErrorMessage = "لطفا ایمیل / پست الکترونیکی خود را وارد کنید")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }

[MinLength(8)]
[MaxLength(20)]
[Remote(action: "CheckTelAndAddressAndEtc", controller: "Account", AdditionalFields = "Address , ActivitiesCompany , CompanyName ,KindOfMembership",
HttpMethod = "POST", ErrorMessage = "لطفا فیلدها را پر نمایید")]
[DataType(DataType.PhoneNumber)]
[Display(Name = "تلفن تماس")]
public string Tel { get; set; }

[MinLength(11)]
[MaxLength(20)]
[DataType(DataType.PhoneNumber)]
[Display(Name = "تلفن همراه")]
public int CellPhone { get; set; }

[DataType(DataType.MultilineText)]
[Display(Name = "آدرس")]
public string Address { get; set; }

[Display(Name = "فعالیت شرکت")]
public string ActivitiesCompany { get; set; }

[Display(Name = "نام شرکت")]
public string CompanyName { get; set; }

[Display(Name = "آدرس سایت شرکت")]
public string WebSite { get; set; }

}


البته فکر میکنم اعتبارسنجی راه دور tel مورد داره ... ولی در کل اینه کلاسش

lordesiah
چهارشنبه 04 اردیبهشت 1392, 20:53 عصر
درست شد ...
الان در پوست خود نمیگنجم ...
فقط یه سوال اینکه چطور متوجه مقدار نوع عضویتم بشم چون به radio button توی کنترلرم دسترسی ندارم ... راهی چیزی دارید؟ پیشنهادی چیزی؟

lordesiah
چهارشنبه 04 اردیبهشت 1392, 21:31 عصر
پاسخ ::: خب سوالم رو با ج میذارم ... خیلی ساده بود فقط باید آشناتر میبودم با جی کوئری و اینااا
میخواستم صفحه ایجاد کاربریم به گونه ای باشه که با زدن دکمه کارجو فرم کارجو نشون داده بشه و با زدن دکمه کارفرما فرم کارفرما و خیلی تابلو نشه و خرابکاری این وسط پیش نیاد ...
به یاری mo.esmp و خودم و نت و سایت های عزیز دیگه :D ج من این شد که کاری که میخوام رو انجام میده


<script type="text/javascript" >
function KindOfMembership() {
var divEmployer;
var divJobSeeker;
if ($('#employerRadio').is(':checked')) {
divEmployer = $('#employerDiv');
divEmployer.show();
divEmployer.css('display', 'block');
divJobSeeker = $('#jobSeekerDiv');
divJobSeeker.hide();
divJobSeeker.css('display', 'none');
}
else if ($('#jobSeekerRadio').is(':checked')) {

divJobSeeker = $('#jobSeekerDiv');
divJobSeeker.show();
divJobSeeker.css('display', 'block');
divEmployer = $('#employerDiv');
divEmployer.hide();
divEmployer.css('display', 'none');

}
}

</script>


<input id="employerRadio" type="radio" name="@Model.KindOfMembership" value="0" onclick="KindOfMembership();" />

<input id="jobSeekerRadio" type="radio" name="@Model.KindOfMembership" value="1" onclick="KindOfMembership();" />


اینم قسمتایی از فرمم که میخوام در حالتی خاص نشون داده بشه یا نشه ... البته در وهله اول display : none هستش تا ... بهتره :D آبروریزیش کمتره


<div id="jobSeekerDiv" style="display: none">
<div class="editor-label">
@Html.LabelFor(model => model.BirthDayTime)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BirthDayTime)
@Html.ValidationMessageFor(model => model.BirthDayTime)
</div>

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



<div id="employerDiv" style="display: none">
<div class="editor-label">
@Html.LabelFor(model => model.ActivitiesCompany)
</div>

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

<div class="editor-label">
@Html.LabelFor(model => model.CompanyName)
</div>

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

<div class="editor-label">
@Html.LabelFor(model => model.WebSite)
</div>

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

</div>