我正在Xamarin中构建一个应用程序,该应用程序将显示一个webview,允许用户选择使用OAuth进行身份验证的平台。在webview中,会显示OAuth提供的图像,当单击该图像时,应调用模型上的方法,该方法将处理该平台的OAuth。我现在似乎无法从图像的onclick事件中调用模型上的函数。
CSHTML:
@model OAuthLogin
<html>
<body>
<input id="button" type="image" src="@Model.ImageFile" onclick="login()"/>
</body>
<script>
function login() {
alert("Model.OpenAuthenticator() should be called from here...");
}
</script>
</html>
模型:
public class OAuthLogin {
public string ImageFile => ImageString();
private SupportedPlatform Platform { get; }
private const string GoogleImage = "Images/google.svg";
private const string MicrosoftImage = "Images/microsoft.svg";
public OAuthLogin(SupportedPlatform platform) {
Platform = platform;
}
public void OpenAuthenticator() =>
Authenticator.Authenticate(Platform);
private string ImageString() {
switch (Platform) {
case SupportedPlatform.Google: {
return GoogleImage;
}
case SupportedPlatform.Microsoft: {
return MicrosoftImage;
}
default: {
throw new NotSupportedException($"No authentication implemented for platform {Platform}.");
}
}
}
}