这是我的观点:
@model MediaShuttleCoreWebApp.Models.MediaShuttleAPI.ApiResponse.TransferLinkResponseContainer
@{
ViewData["Title"] = "CreateDownloadToken";
}
<h2>CreateDownloadToken</h2>
<div class="container we myBorder">
<h3 class="text-center display-4 myBorder"> Media Shuttle </h3>
@if (Model.User == null)
{
}
<a class="btn btn-primary btn-lg" href="@Url.Action("SendEmail","MediaShuttle", Model)"
role="button">Create Download Token</a>
<p>Email: @Model.User.Email</p>
</div>
现在,当用户单击作为“a 标签”的“按钮”时,它会将模型发送回控制器。但是我注意到它返回 2 个属性为 NULL,其余属性填充了最初传递给 View() 的值。
这是传递给 View() 的模型:
namespace MediaShuttleCoreWebApp.Models.MediaShuttleAPI.ApiResponse
{
[DataContract]
public class TransferLinkResponseContainer
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "url")]
public string Url { get; set; }
[DataMember(Name = "createdOn")]
public DateTime CreatedOn { get; set; }
[DataMember(Name = "expiresOn")]
public DateTime ExpiresOn { get; set; }
[DataMember(Name = "user")]
public User User { get; set; }
[DataMember(Name = "grants")]
public IList<string> Grants { get; set; }
[DataMember(Name = "destinationPath")]
public string DestinationPath { get; set; }
[DataMember(Name = "notifications")]
public IList<Notification> Notifications { get; set; }
}
}
返回为 NULL 的 2 个属性是:
public User User { get; set; }
public IList<Notification> Notifications { get; set; }
请注意,这 2 个属性不是您的普通字符串、整数或日期时间类型。所以场景是当我将模型从控制器传递到 View() 时,我有数据,但是当我将模型从 View() 传递到控制器时,在“Url.Action”中只有一些属性填充了原始数据价值观。知道为什么会这样吗?我到处寻找,但没有任何东西能真正解释为什么我的 2 个属性返回为空。
我想只创建一个具有这两个不同类型属性的 ViewModel 并将它们设置为字符串。
这是 User 属性的类:
[DataContract]
public class User
{
[DataMember(Name = "email")]
public string Email { get; set; }
}
它只包含一个字符串。
也欢迎任何建议。但我真的很想了解当模型返回到控制器时发生了什么,为什么这两个属性返回为空。