Jineesh TR Ответов: 2

Как отправить данные из частичного представления в MVC4?


Всем Привет,
У меня есть страница "свяжитесь с нами", которая состоит из двух частей
1. описательная часть
2. контактная форма
Я сделал контактную форму частью как частичный вид.
Но моя проблема здесь заключается в том, что результат действия для подачи данных не является триггерным.
код в контроллере частичного представления
public class ContactUsFormController : Controller
    {
        //
        // GET: /ContactUs/
        SM_WEB.Models.SMWebDefaultConnection objSMWebDefaultConnection = new SM_WEB.Models.SMWebDefaultConnection();
        public ActionResult _ContactUs()
        {
            ContactUsForm contactUs = new ContactUsForm();
            return View(contactUs);
        }
        [HttpPost]
        public ActionResult _ContactUs(ContactUsForm candidateContactUs)
        {
            SM_WEB.Models.SMWebDefaultConnection objSMWebDefaultConnection = new SMWebDefaultConnection();
objSMWebDefaultConnection.smConn.spUNCandidateContactUs(candidateContactUs.unCandidateFirstName, candidateContactUs.unCandMobilePhone, candidateContactUs.unCandLandLine,
                candidateContactUs.unCandEmail, candidateContactUs.countryID, candidateContactUs.stateID, candidateContactUs.provinceID,
                candidateContactUs.unCandEnquiry);
            objSMWebDefaultConnection.smConn.SaveChanges();
            candidateContactUs = new ContactUsForm();
            return View(candidateContactUs);
        }


В Частичном Представлении
@model SM_WEB.Models.ContactUsForm
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true);
    <fieldset style="margin: 20px">
        <legend>Contact Us</legend>
        <div class="editor-label">
            <label for="unCandidateFirstName">
                Name</label>
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.unCandidateFirstName)
            @Html.ValidationMessageFor(model => model.unCandidateFirstName)
        </div>
        <div class="editor-label">
            <label for="unCandMobilePhone">
                Mobile No</label>
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.unCandMobilePhone)
            @Html.ValidationMessageFor(model => model.unCandMobilePhone)
        </div>
        <div class="editor-label">
            <label for="unCandLandLine">
                Landline Number</label>
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.unCandLandLine)
            @Html.ValidationMessageFor(model => model.unCandLandLine)
        </div>
        <div class="editor-label">
            <label for="unCandEmail">
                Email</label>
        </div>
            <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>
}


В Родительском Представлении

@Html.Partial("~/Views/ContactUsForm/_ContactUs.cshtml",contact);


Кто-нибудь, помогите мне, пожалуйста..

2 Ответов

Рейтинг:
1

hborkhuis

Html.BeginForm не поддерживает PartialViews и всегда будет обновлять все представление с содержимым частичного представления.

Используйте Ajax.BeginForm для достижения обновления частичного представления. Передайте new AjaxOptions {updateTargetId='_partial' вместе с вызовом, чтобы указать заполнитель для частичного представления.

В вашем случае:

Ajax.BeginForm("_ContactUs", "ContactUsForm", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "contactUsPartial" })

<div id="contactUsPartial">
   @Html.Partial("~/Views/ContactUsForm/_ContactUs.cshtml",contact);
</div>


Рейтинг:
0

Jameel VM

Не могли бы вы попробовать, указав действие и контроллер явно в Html.BeginForm, как показано ниже

@using (Html.BeginForm("ActionName","ControllerName",FormMethod.Post)){


}

Надеюсь, это поможет


Jineesh TR

Привет, Джамиль. Он прекрасно работает. Но возникает другая проблема. родительское представление не отображается. т. е. отображается только частичный вид.

Jameel VM

каково ваше родительское мнение?

Jineesh TR

Это главная страница загрузки. где он рассеивает некоторые статические изображения и тексты. здесь я называю свой частичный взгляд.

@{
Видовой мешок.Title = "Скачать";
Layout = "~/Views/Shared/_Layout.cshtml";
SM_WEB.Модели.DownloadForm download = новый SM_WEB.Модели.DownloadForm();
}
<div class="row">
<div class="col-lg-6">
@Html.Partial("~/Views/DownloadForm/_DownloadForm.cshtml", скачать);
</div>
</div>

Jameel VM

что показывает эта ошибка?

Jineesh TR

В окне браузера отображается только часть частичного просмотра. т. е. родительская страница и ее содержимое не отображаются.

Jameel VM

я думаю, что вы создаете только частичный вид, а не основной вид. Для проверки щелкните правой кнопкой мыши результат действия основного вида(а не результат действия частичного вида) и перейдите в раздел просмотр.

Jineesh TR

Привет Джамиль,
Частичное представление загружается изначально, когда я открываю страницу загрузки. Но когда я нажимаю кнопку Отправить, то отображается только частичная страница просмотра.

Dhananjai

У меня есть такая же проблема(вопрос отправлен), может ли кто-нибудь ответить, пожалуйста?

Jameel VM

где же ваш вопрос? Пришлите мне ссылку пожалуйста