繁体   English   中英

从局部视图刷新编辑视图

[英]Refresh edit view from a partial view

是否可以从控制器中的方法刷新编辑视图?

我有一个局部视图,它对控制器进行回调。 通过这种方法,我想根据传递给该方法的值刷新整个编辑视图。

  public ActionResult AssignPractice(Guid id, Guid doctorId)
    {
        var doctorViewModel = Map.This(_doctorService.GetDoctor(doctorId)).To<DoctorViewModel>();
        AddSelectLists(doctorViewModel);
        var practice = _practiceService.GetPractice(id);
        doctorViewModel.Practice = new PracticeSelectListViewModel()
            {Item = practice, DoctorId = doctorId, SelectList = _practices};
        return View("Edit", doctorViewModel);
    }

提前致谢,

编辑:

我会详细说明。 我面临的情况如下:

需要为医生分配一项业务,这不仅会影响Doctors PracticeId,而且还会影响我的doctorviewmodel上的20个其他属性,并且需要在视图上反映出来。 也许我正在通过寻求上述解决方案来以错误的方式看待这一问题。

如何使用jQuery加载函数调用控制器方法trhu JSON? 您调用控制器方法,更新ViewModel并返回您的Edit View或其他内容。

jQuery的:

$('#buttonToRefresh').click(function () {
    $('#mainContent').load('@Url.Content("YourAction", "YourController")', $('#yourFormID').serialize());
});

视图:

<div id="mainContent">
    @Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "yourFormID" })
    {
        // Your content goes here.
    }
</div>

您的控制器保持不变。

好的,所以我使用了所有解决方案中的一小部分来得出适用于我的案例的解决方案。

Javascript:

function Doctor() {
this.id = null;
this.FirstName = "";
this.LastName = "";
this.Code = "";
this.PhoneNumber = "";
this.PhoneNumber2 = "";
this.PhoneNumberActive = 0;
this.PhoneNumber2Active = 0;
this.Email = "";
this.Practice = new Practice();

function AssignPractice() {

var myModel = new Doctor();
myModel.id = Id.value;
myModel.FirstName = FirstName.lastChangedValue;
myModel.LastName = LastName.lastChangedValue;
myModel.Code = Code.lastChangedValue;
myModel.PhoneNumber = PhoneNumber.lastChangedValue;
myModel.PhoneNumber2 = PhoneNumber2.lastChangedValue;
myModel.PhoneNumberActive = PhoneNumberActive.lastChangedValue;
myModel.PhoneNumber2Active = PhoneNumber2Active.lastChangedValue;
myModel.Email = Email.lastChangedValue;
myModel.Practice.id = cbbPractice.lastSuccessValue;
var postData = JSON.stringify(myModel);  
$.ajax({
    url: assignPracticeUrl,
    type: 'POST',
     data: postData,
    success: function (data) {
        $('#yourFormID').html(data);
    }
});

视图:

@using (Html.BeginForm("Edit", "Doctor", FormMethod.Post, new { id = "yourFormID" }))

控制器:

 public ActionResult AssignPractice(FormCollection form)
    {

        JavaScriptSerializer js = new JavaScriptSerializer();
        var doctor = js.Deserialize<Doctor>(form[0]);
        var doctorViewModel = Map.This(_doctorService.GetDoctor(doctor.Id)).To<DoctorViewModel>();


        AddSelectLists(doctorViewModel);
        var practice = _practiceService.GetPractice(doctor.Practice.Id);
        var practiceViewModel = Map.This(practice).To<PracticeViewModel>();
        doctorViewModel.Practice = new PracticeSelectListViewModel() { Item = practice, SelectList = _practices };
        doctorViewModel.FirstName = doctor.FirstName;
        doctorViewModel.LastName = doctor.LastName;
        doctorViewModel.PhoneNumber = doctor.PhoneNumber;
        doctorViewModel.PhoneNumber2 = doctor.PhoneNumber2;
        doctorViewModel.PhoneNumberActive = doctor.PhoneNumberActive;
        doctorViewModel.PhoneNumber2Active = doctor.PhoneNumberActive;
        doctorViewModel.Email = doctor.Email;
        doctorViewModel.OpeningHours = practiceViewModel.OpeningHours;
        doctorViewModel.AppointmentHours = practiceViewModel.AppointmentHours;
        doctorViewModel.AddressViewModel = practiceViewModel.AddressViewModel;
        doctorViewModel.Website = practiceViewModel.Website;
        doctorViewModel.Labo = practiceViewModel.Labo;
        doctorViewModel.KeyChain = practiceViewModel.KeyChain;
        return PartialView("Edit",  doctorViewModel);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM