Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从局部视图刷新编辑视图_C#_Asp.net Mvc_Viewmodel - Fatal编程技术网

C# 从局部视图刷新编辑视图

C# 从局部视图刷新编辑视图,c#,asp.net-mvc,viewmodel,C#,Asp.net Mvc,Viewmodel,是否可以从控制器中的方法刷新编辑视图 我有一个局部视图,它回调控制器。通过此方法,我希望根据传递给此方法的值刷新整个编辑视图 public ActionResult AssignPractice(Guid id, Guid doctorId) { var doctorViewModel = Map.This(_doctorService.GetDoctor(doctorId)).To<DoctorViewModel>(); AddSelec

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

我有一个局部视图,它回调控制器。通过此方法,我希望根据传递给此方法的值刷新整个编辑视图

  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);
    }
公共操作结果分配实践(Guid id、Guid doctorId) { var doctorViewModel=Map.This(_doctorService.GetDoctor(doctorId)).To(); 添加选择列表(doctorViewModel); var practice=\u practiceService.GetPractice(id); doctorViewModel.Practice=新实践SelectListViewModel() {Item=practice,DoctorId=DoctorId,SelectList=\u practices}; 返回视图(“编辑”,doctorViewModel); } 提前感谢,

编辑:

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


医生需要指定一个机构,这不仅会影响医生机构ID,还会影响我的doctorviewmodel上的20个其他属性,它们需要反映在视图上。也许我是以错误的方式看待这一点,要求提供上述问题的解决方案。

如何使用jQuery load函数调用控制器方法trhu JSON?调用控制器方法,更新ViewModel并返回编辑视图或其他内容

jQuery:

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


@BeginForm(“Action”、“Controller”、FormMethod.Post、new{id=“yourFormID”})
{
//你的内容放在这里。
}

您的控制器保持不变。

好的,所以我使用了一点所有的解决方案来解决我的案例

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);
    }
});
视图:

控制器:

 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);
    }
公共行动结果分配实践(FormCollection form)
{
JavaScriptSerializer js=新的JavaScriptSerializer();
var doctor=js.反序列化(表单[0]);
var doctorViewModel=Map.This(_doctorService.GetDoctor(doctor.Id)).To();
添加选择列表(doctorViewModel);
var practice=\u practiceService.GetPractice(doctor.practice.Id);
var practiceViewModel=Map.This(practice.To();
doctorViewModel.Practice=new PracticeSelectListViewModel(){Item=Practice,SelectList=\u practices};
doctorViewModel.FirstName=doctor.FirstName;
doctorViewModel.LastName=doctor.LastName;
doctorViewModel.PhoneNumber=doctor.PhoneNumber;
doctorViewModel.PhoneNumber2=doctor.PhoneNumber2;
doctorViewModel.PhoneNumberActive=doctor.PhoneNumberActive;
doctorViewModel.PhoneNumber2Active=doctor.phonenumbertractive;
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;
返回PartialView(“编辑”,doctorViewModel);
}

什么客户端事件触发了此操作?提交表格?点击表单外的按钮?请加标记……我正在使用第三方控件。”settings.CallbackRouteValues=new{Controller=“Doctor”,Action=“AssignPractice”,id=Model.Item.id,doctorId=Model.doctorId};settings.Properties.ClientSideEvents.SelectedIndexChanged=“函数(s,e){cbbPractice.PerformCallback();}”;”第三方控件位于模板编辑器中也许rashleigh提出的解决方案是我应该走的方向。为实践特定数据创建部分视图,并从我的其他部分视图刷新该视图。但是您可以从另一个局部视图中刷新一个局部视图吗?
@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);
    }