C# 将Ajax响应绑定到ASP.NET MVC

C# 将Ajax响应绑定到ASP.NET MVC,c#,razor,asp.net-core-mvc,C#,Razor,Asp.net Core Mvc,我是ASP.NETMVC新手,有一个小问题 我有这样一个用户模型: public class UserDetailsViewModels : ViewBaseModels { [Display(Name = "Benutzername")] public string Username { get; set; } [Display(Name = "E-Mail")] public string Email { get; set;

我是ASP.NETMVC新手,有一个小问题

我有这样一个用户模型:

public class UserDetailsViewModels : ViewBaseModels
{
        [Display(Name = "Benutzername")]
        public string Username { get; set; }

        [Display(Name = "E-Mail")]
        public string Email { get; set; }

        [Display(Name = "Anmerkung")]
        public string Note { get; set; }
}
[HttpPost]
public async Task<JsonResult> GetUser(UserDetailsViewModels m, int id)
{
    try
    {
        var dtsource = await RequestManager.DoGet<User>("User/" + id); //Call the API

        m.Email = dtsource.Email;
        m.Note = dtsource.Note;
        m.Username = dtsource.Username;

        return Json(m);
    }
    catch (Exception ex)
    {
        return Json(new { error = ex.Message });
    }
}
在我看来,我有以下HTML标记:

<div class="form-group">
   @Html.LabelFor(x => x.Username)
   @Html.TextBoxFor(x => x.Username, new { @class = "form-control input-sm" })
</div>
<!-- /.form-group -->
<div class="form-group">
    @Html.LabelFor(x => x.Email)
    @Html.TextBoxFor(x => x.Email, new { @class = "form-control input-sm" })
</div>
<div class="form-group">
    @Html.LabelFor(x => x.Note)
    @Html.TextBoxFor(x => x.Note, new { @class = "form-control input-sm" })
</div>
<!-- /.form-group -->

我知道我可以通过jQuery将结果绑定到文本框。我现在的问题是,我可以直接将结果传递给模型吗。不幸的是,我无法使用Google找到正确的视图。如果您希望服务器在razor视图上呈现结果并将html返回给客户端,那么您需要的是部分视图

您需要将html部分重构为部分视图,然后发布到的控制器上的操作应返回此部分视图

之后,jquery调用应使用新呈现的html替换div

假设您的部分视图名为“_User.cshtml”,并且位于相应视图目录中名为“partial”的文件夹中; 然后Post方法将更改为

[HttpPost]
public async Task<ActionResult> GetUser(UserDetailsViewModels m, int id)
{
    var dtsource = await RequestManager.DoGet<User>("User/" + id); //Call the API

    m.Email = dtsource.Email;
    m.Note = dtsource.Note;
    m.Username = dtsource.Username;
    return PartialView("Partial/_User", m);
}
将html移动到部分视图cshtml

<div class="form-group">
   @Html.LabelFor(x => x.Username)
   @Html.TextBoxFor(x => x.Username, new { @class = "form-control input-sm" })
</div>
<!-- /.form-group -->
<div class="form-group">
    @Html.LabelFor(x => x.Email)
    @Html.TextBoxFor(x => x.Email, new { @class = "form-control input-sm" })
</div>
<div class="form-group">
    @Html.LabelFor(x => x.Note)
    @Html.TextBoxFor(x => x.Note, new { @class = "form-control input-sm" })
</div>

@LabelFor(x=>x.Username)
@TextBoxFor(x=>x.Username,新的{@class=“form control input sm”})
@LabelFor(x=>x.Email)
@TextBoxFor(x=>x.Email,新的{@class=“form control input sm”})
@LabelFor(x=>x.Note)
@TextBoxFor(x=>x.Note,新的{@class=“formcontrolinput sm”})
为了促进重用,主html将使用

<div id="userInfo">
    @Html.Partial("Partial/_User", Model)
</div>

@Html.Partial(“Partial/_User”,Model)
您可以阅读有关局部视图的更多信息

如果您希望服务器在razor视图上呈现结果并将html返回给客户端,那么您需要的是部分视图

您需要将html部分重构为部分视图,然后发布到的控制器上的操作应返回此部分视图

之后,jquery调用应使用新呈现的html替换div

假设您的部分视图名为“_User.cshtml”,并且位于相应视图目录中名为“partial”的文件夹中; 然后Post方法将更改为

[HttpPost]
public async Task<ActionResult> GetUser(UserDetailsViewModels m, int id)
{
    var dtsource = await RequestManager.DoGet<User>("User/" + id); //Call the API

    m.Email = dtsource.Email;
    m.Note = dtsource.Note;
    m.Username = dtsource.Username;
    return PartialView("Partial/_User", m);
}
将html移动到部分视图cshtml

<div class="form-group">
   @Html.LabelFor(x => x.Username)
   @Html.TextBoxFor(x => x.Username, new { @class = "form-control input-sm" })
</div>
<!-- /.form-group -->
<div class="form-group">
    @Html.LabelFor(x => x.Email)
    @Html.TextBoxFor(x => x.Email, new { @class = "form-control input-sm" })
</div>
<div class="form-group">
    @Html.LabelFor(x => x.Note)
    @Html.TextBoxFor(x => x.Note, new { @class = "form-control input-sm" })
</div>

@LabelFor(x=>x.Username)
@TextBoxFor(x=>x.Username,新的{@class=“form control input sm”})
@LabelFor(x=>x.Email)
@TextBoxFor(x=>x.Email,新的{@class=“form control input sm”})
@LabelFor(x=>x.Note)
@TextBoxFor(x=>x.Note,新的{@class=“formcontrolinput sm”})
为了促进重用,主html将使用

<div id="userInfo">
    @Html.Partial("Partial/_User", Model)
</div>

@Html.Partial(“Partial/_User”,Model)
您可以阅读有关局部视图的更多信息

您好,您能否澄清使用jquery绑定结果时是否存在问题,或者您是否希望服务器使用通过模型传递给视图的更新细节呈现razor视图?@HenryLu I希望服务器使用更新细节呈现razor视图您可以
返回PartialView(“UserDetailPartial”,m)
并在UserDetailParital.cshtml中提供标记。您的ajax成功将是
$(“target”).html(result)
,其中result是来自“UserDetailPartial”的html片段。您好,您能否澄清一下使用jquery绑定结果是否存在问题,或者,您是否希望服务器使用通过模型传递给视图的更新细节呈现razor视图?@HenryLu我希望服务器使用更新细节呈现razor视图您可以
返回PartialView(“UserDetailPartial”,m)
并在UserDetailParital.cshtml中提供标记。您的ajax成功将是
$(“target”).html(result)
,其中result是“UserDetailPartial”中的html片段。非常感谢。那救了我一天,非常感谢。那救了我一天