如何将空字符串作为参数从Javascript传递到MVC ActionMethod



我有一个ActionMethod

[HttpGet]
[Route("ControllerName/IsUniqueNotificationName/{notificationName}")]
public IActionResult IsUniqueNotificationName(string notificationName)
{
var name = string.IsNullOrEmpty(notificationName);
var isUnique = 
this.bannerNotificationService.IsUniqueNotificationName(notificationName);
return this.Json(isUnique);
}

我的javascript方法

checkUniqueNotificationname = function (emailElement) {
var notificationName = $(emailElement).val();
let uri = "BannerNotification/IsUniqueNotificationName/" + notificationName;
$.ajax({
type: "Get",
url: common.buildUrlWithBasePath(uri),
success: function (data) {
if (data == true) {
$("#BannerNotificationName").css({ "border-color": "black" });
$("#altFromMessageGroupValue").hide();
}
else {
$("#BannerNotificationName").css({ "border-color": "red" });
$("#altFromMessageGroupValue").show();
}
},
error: function () {
common.hideLoader();
}
});
};

当我得到notificationName值时,它会击中我的ActionMethod,但当我得到notificationName为空字符串**(即notificationName=''(**时,它不会击中我的端点。相反,它击中了另一个看起来像的端点

[Route("ControllerName/{banName}")]
[HttpGet]
public IActionResult Details(string banName)
{
}

有人能帮我处理这个问题吗

将您的操作更改为:

[HttpGet]  
[Route("ControllerName/IsUniqueNotificationName/{notificationName?}")]
public IActionResult IsUniqueNotificationName(string notificationName)
{
var empty = string.IsNullOrEmpty(notificationName);
if (! empty){
}
var isUnique = 
this.bannerNotificationService.IsUniqueNotificationName(notificationName);
return  Json(isUnique);
}
else return BadRequest();
}

您的javascript可能也需要一些更改:

checkUniqueNotificationname = function (emailElement) {
var notificationName = $(emailElement).val();
if(notificationName =="")
{
$("#BannerNotificationName").css({ "border-color": "red" });
$("#altFromMessageGroupValue").show();
return false;
}
.....your code
};

我建议您在服务器中添加另一个方法

[HttpGet]
[Route("ControllerName/IsUniqueNotificationName")]
public IActionResult IsUniqueNotificationName()
{
var name = "";
var isUnique = 
this.bannerNotificationService.IsUniqueNotificationName(name);
return this.Json(isUnique);
}

最新更新