-1

I have this route:

routes.MapRoute(name: "Trads",
    url: "test_3000/{action}/{traditional}",
    defaults: new { controller = "Test_3000", action = "Subset", traditional = UrlParameter.Optional });

And a Test_3000Controller with this method:

    // GET: Test_3000/Subset?traditional=(Chinese Character)
public ActionResult Subset(string traditional)
{
    if (traditional == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Test_3000 test_3000 = db.Test_3000.Find(traditional);
    if (test_3000 == null)
    {
        return HttpNotFound();
    }
    return View(test_3000);
}

This URL works:

server/test_3000/subset?traditional=的

This URL does NOT work:

server/test_3000/subset/的

In the latter case, 'traditional' is null.

"Traditional" is a column in an SQL table.

Tetsuya Yamamoto
  • 24,297
  • 8
  • 39
  • 61
Jim Kay
  • 91
  • 6

2 Answers2

0

Have you tried this

Routes.MapRoute(name: "Trads",
    url: "test_3000/{action}/{traditional?}",
    defaults: new { controller = "Test_3000", action = "Subset", traditional = UrlParameter.Optional });

Notice the ? on traditional. Also

public ActionResult Subset(string traditional  = null)
{ ... }

So that traditional is explicitly set as an optional

Daveo
  • 19,018
  • 10
  • 48
  • 71
  • OP already has `traditional = UrlParameter.Optional`. And `string` is already `null` by default (none of this is required) –  Jul 28 '17 at 03:33
  • And adding the `?` will throw an exception - _The route URL cannot start with a '/' or '~' character and it cannot contain a '?' character_. That is only applicable to attribute routing –  Jul 28 '17 at 04:14
  • No, I haven't tried this version, but it seems I don't want to. No? – Jim Kay Jul 29 '17 at 04:52
0
routes.MapRoute(
            name: "ChBoPinCritCji",
            url: "charbopopincrits/subset/{Char}",
            defaults: new { controller = "CharBopoPinCrits", action = "Subset", Char = typeof(string) }
        );

This MapRoute, which is first, now works.

Thanks for the attention.

Jim Kay
  • 91
  • 6