Asp.net core mvc 如何在ASP NET核心MVC视图组件中调用局部视图?

Asp.net core mvc 如何在ASP NET核心MVC视图组件中调用局部视图?,asp.net-core-mvc,call,partial-views,Asp.net Core Mvc,Call,Partial Views,我有一个页脚,它是一个视图组件。在那个页脚里,我有一份时事通讯,我想把它作为一个局部视图 但是我的页脚需要一个模型,我的新闻稿也需要一个模型 现在我不能给时事通讯打电话了 如何操作?您可以使用视图模型来包含这两个模型,您可以检查: public class MyViewModel { public FirstModel FirstModels { get; set; } public SecondModel SecondModels { get; set; } } public

我有一个页脚,它是一个视图组件。在那个页脚里,我有一份时事通讯,我想把它作为一个局部视图

但是我的页脚需要一个模型,我的新闻稿也需要一个模型

现在我不能给时事通讯打电话了


如何操作?

您可以使用视图模型来包含这两个模型,您可以检查:

public class MyViewModel
{
    public FirstModel FirstModels { get; set; }
    public SecondModel SecondModels { get; set; }
}

public class FirstModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class SecondModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}
这是ViewComponent的视图,只需要调用ViewModel,就可以使用这两个

MyViewModel中的模型现在:

@model MyViewModel

@Model.FirstModels.Name  //get the name from FirstModel
<br/>
<partial name="_newsletter" model="Model.SecondModels"> //get the name from SecondModel in Partial
@model MyViewModel
@Model.FirstModels.Name//从FirstModel获取名称

//从部分中的SecondModel获取名称
额外的

脚本应该在_Layout.cshtml中定义,而不是在局部视图中定义:

//<html> ........</html>

<script>     
FormSuccess = function () {
    alert('you are membership now');
};
</script>
<form asp-controller="Home" asp-action="NewsLetter" data-ajax="true" data-ajax-mode="post" data-ajax-success="FormSuccess">
<input asp-for="Name">  //Email
<input type="submit" />
</form>
/。。。。。。。。
FormSuccess=函数(){
提醒(“您现在是会员”);
};
局部视图中的窗体:

//<html> ........</html>

<script>     
FormSuccess = function () {
    alert('you are membership now');
};
</script>
<form asp-controller="Home" asp-action="NewsLetter" data-ajax="true" data-ajax-mode="post" data-ajax-success="FormSuccess">
<input asp-for="Name">  //Email
<input type="submit" />
</form>

//电子邮件
结果:


非常感谢。我可以用这个解决方案来解决这个问题。我想这样做:如果用户在收到一条消息后在新闻稿表单上发送电子邮件,他会收到一条消息:“您现在是会员了”。我想用ajax表单完成它。但是我不能写我的函数。你能帮我吗?真的很有必要@Tisa@hasti.auajax成功中的警报(“您现在是会员”)。“不能写我的函数”是什么意思,请你展示一下你的相关代码好吗?我猜,你应该把javascript部分放在_布局中,而不是部分。我想在用户在新闻稿中发送电子邮件后,在收到成功的消息后再做。我在控制器上输入:/switch(新闻稿)//{//case newslettesresult.EmailExist://{//return Json(new//{//text=“Success”@Tisabut我不能写我的footer.js,对我说我应该在ajax中用som属性设置表单(表单标签)。我写了:@**,但我不能写函数formsuccess。你能帮我写这个函数@Tisa吗